Activer la mise en cache pour une requête
Définissez l’en-tête de requêtewandb-cache-mode sur l’un des modes suivants :
Pour contourner le cache, omettez l’en-tête.
Pour assurer la compatibilité avec les clients OpenPipe, le proxy accepte également l’en-tête obsolète
op-cache. Celui-ci prend en charge les mêmes modes, ainsi que true comme alias de readWrite et false pour contourner le cache. Si une requête envoie les deux en-têtes, ceux-ci doivent indiquer le même mode. Dans le cas contraire, le proxy renvoie 400 Bad Request.
- Python
- JavaScript
- cURL
readWrite ou readOnly), la réponse contient un en-tête wandb-cache-status dont la valeur est hit ou miss. Le proxy transmet également cette valeur dans l’en-tête de compatibilité x-wandb-cache. La réponse à une requête writeOnly ne contient aucun de ces deux en-têtes.
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. La clé de cache combine les valeurs suivantes :- L’entity W&B, le projet et la version du projet que le proxy résout à partir de la valeur
model. - 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. Le projet, la version et la révision d’acheminement résolus figurent déjà dans la clé : seules des références équivalentes partagent donc des entrées. Par exemple,ticket-classifieretticket-classifier@v1sont toutes deux résolues en version 1. Des versions différentes ne partagent jamais d’entrées. - Les clés de métadonnées qui commencent par
wandb., notammentwandb.entityetwandb.thread_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 wandb., comme gen_ai.conversation.id ou 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 W&B. 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.
Les requêtes directes provider/model peuvent également définir un en-tête de cache. Le proxy indexe leurs entrées séparément, par entity, fournisseur, référence de modèle et identité W&B de l’appelant. Ces entrées ne correspondent jamais aux entrées de projet.
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
wandb-cache-modeautre que celles répertoriées, ou toute combinaison de modes contradictoires danswandb-cache-modeetop-cache, 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êtewandb-cache-mode et op-cache dans les requêtes cross-origin, et expose wandb-cache-status, x-wandb-cache 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.