Activer la mise en cache pour une requête
Définissez l’en-tête de requêteForge-Cache-Mode sur l’un des modes suivants :
Pour contourner le cache, omettez l’en-tête.
- Python
- JavaScript
- cURL
readWrite ou readOnly), la réponse contient un en-tête Forge-Cache-Status dont la valeur est hit ou miss. La réponse à une requête writeOnly ne contient pas cet en-tête.
Ce qui rend deux requêtes identiques
Le proxy recherche une réponse en cache après avoir résolu la version du projet et la révision d’acheminement, et avant de sélectionner un fournisseur. Pour une redéfinition de modèle, la recherche a lieu après que le proxy a résolu le fournisseur de la redéfinition. La clé de cache combine les valeurs suivantes :- L’entity Weights & Biases, le projet et la version du projet que le proxy résout à partir de l’en-tête
OpenAI-Projectet des métadonnéesforge.project_version. - La révision d’acheminement qui s’applique à la version au moment où la requête arrive.
- Le chemin de la requête et la chaîne de requête.
- Un hachage SHA-256 du corps de requête, sérialisé avec les clés d’objet triées et sans les valeurs indiquées ci-dessous.
- La chaîne
modelbrute d’une requête acheminée. Le projet, la version et la révision d’acheminement résolus figurent déjà dans la clé :"router", une valeurmodelvide et une valeurmodelomise partagent donc des entrées. Des versions différentes ne partagent jamais d’entrées. - Les clés de métadonnées qui commencent par
forge.ouwandb., notammentforge.project_version. - L’identifiant de conversation dans
gen_ai.conversation.id. stream: false, que le proxy traite comme sistreamétait omis.- Un objet
metadatavide, que le proxy traite comme simetadataétait omis.
messages, tools, tool_choice, response_format, temperature, top_p, max_tokens, seed, n, stop, user, de tous les champs propres au fournisseur, ainsi que des clés de métadonnées qui ne commencent pas par forge. ou wandb., comme user.id. L’ordre des clés au sein d’un objet n’a pas d’importance. En revanche, l’ordre des éléments d’un tableau, comme messages, en a.
Les entrées sont limitées à votre entity et à votre projet Weights & Biases. Une requête identique provenant d’une autre entity, ou destinée à un autre projet de votre entity, ne correspond jamais à vos entrées.
Une réponse en cache conserve la cible d’acheminement qui l’a produite. Le proxy sert un succès de cache depuis cette cible, sans acheminement pondéré ni persistant.
Une redéfinition de modèle envoie une valeur provider/model dans model, accompagnée de l’en-tête OpenAI-Project. Le proxy la met en cache dans la version de projet sélectionnée, comme le trafic acheminé. Sa clé inclut également le fournisseur, la référence du modèle et la configuration du fournisseur : une redéfinition ne correspond donc jamais aux entrées acheminées ni aux entrées d’un autre modèle.
Limites
Le cache présente les limites suivantes :- Requêtes sans streaming uniquement. Les requêtes avec
stream: truequi définissent un en-tête de cache renvoient400 Bad Request. - Réponses réussies uniquement. Le proxy ne stocke que les réponses 2xx d’une taille maximale de 8 Mio.
- Conservation de 7 jours. Les entrées sont supprimées 7 jours après leur écriture. Les succès de cache ne prolongent pas leur durée de vie.
- Les modes non valides sont rejetés. Toute valeur de
Forge-Cache-Modeautre que celles répertoriées renvoie400 Bad Request.
Traces et analytique
Le proxy enregistre tout de même un succès de cache comme trace du projet. La trace conserve la réponse d’origine et son utilisation des jetons, porte la mentioncache_hit=true et ne présente aucune latence du fournisseur. Une requête qui active la lecture du cache mais qui est transmise au fournisseur porte la mention cache_hit=false.
L’analytique comptabilise à zéro les dépenses du fournisseur pour un succès de cache, puisqu’aucune inférence n’a été exécutée, mais les totaux de jetons incluent toujours l’utilisation rejouée. La création de datasets déduplique les entrées identiques : les réponses rejouées n’ajoutent donc pas de lignes d’entraînement en double.
Clients navigateur
Le proxy autorise les en-têtes de requêteOpenAI-Project et Forge-Cache-Mode dans les requêtes cross-origin, et expose Forge-Cache-Status et x-proxy-request-id au code exécuté dans le navigateur.
Complétions de chat
Découvrez comment le proxy construit la requête destinée au fournisseur, gère le streaming et transmet les outils ainsi que la sortie structurée.