Format Anthropic
from anthropic import Anthropic client = Anthropic( base_url="https://votre-domaine/api/proxy" ) # vos appels ne changent pas
Les proxys API
Changez l'URL de base de votre SDK. Chaque bloc image est optimisé en vol, le reste de la requête passe tel quel. Votre code ne bouge pas ; votre facture, si.
Format Anthropic
from anthropic import Anthropic client = Anthropic( base_url="https://votre-domaine/api/proxy" ) # vos appels ne changent pas
Format OpenAI (Mistral, Gemini, local…)
from openai import OpenAI client = OpenAI( base_url="https://votre-domaine/api/proxy/v1" ) # vos appels ne changent pas
Dites-nous quelle IA vous appelez et où vit votre proxy — la maison écrit les variables d'environnement, le code et le test, avec les bonnes valeurs. Plus rien à adapter.
1 · Les variables de votre proxy
PROXY_UPSTREAM_URL=https://api.anthropic.com
2 · Votre code (une ligne change)
from anthropic import Anthropic client = Anthropic( base_url="https://votre-domaine.vercel.app/api/proxy" ) # vos appels ne changent pas
3 · La preuve (le reçu x-vto)
curl -s -D - https://votre-domaine.vercel.app/api/proxy/v1/messages \ -H "x-api-key: $ANTHROPIC_API_KEY" ... | grep x-vto
Votre clé API ne passe que par VOTRE proxy — jamais par la droguerie.
x-vto-tokens-saved sur chaque réponse : combien de tokens l'image a fait économiser, mesuré.
Le plancher s'ajuste à l'intention du prompt : survol 0.85, exactitude 0.98. Au doute, l'image entière.
Format inhabituel ou échec d'analyse : l'original passe tel quel. Jamais de requête cassée.
Alléger l'image est notre métier. Mais deux économies vivent ailleurs — dans la mémoire du fournisseur et dans ses propres réglages. Le proxy sait les demander pour vous.
Ordonnance n° 1 — la mémoire du fournisseur
Dans une conversation, la même image repart à chaque tour — et vous la repayez à chaque tour. Le prompt cachingd'Anthropic la fait relire au tarif du souvenir. Ajoutez l'en-tête x-vto-cache: auto : le proxy pose le marqueur au bon endroit, dans les règles (quatre points de reprise au maximum, minimum cachable respecté modèle par modèle). Le verdict revient dans x-vto-cache-status.
# opt-in strict : sans l'en-tête, rien n'est injecté
client.messages.create(
...,
extra_headers={"x-vto-cache": "auto"}
)Honnêteté : ces chiffres sont une simulation (bench/cache_simulation.mjs), conduite aux règles documentées d'Anthropic — aucun appel réel, donc aucune facture à l'appui. Au passage, un vrai bug a été corrigé : un cache_control que VOUS posiez sur un bloc image était perdu à la réécriture. Il ne l'est plus. La maison ne casse jamais votre cache : elle réécrit vos images à l'octet près, toujours à l'identique.
Ordonnance n° 2 — les réglages de la maison d'en face
Chez OpenAI, une image en detail: low coûte 256 tokens, forfait. Notre proxy le pose lui-même quand votre prompt demande un survol et que la fidélité jugée le permet — la décision est prise par image, toujours la même pour la même image (votre cache de préfixe tient).
Chez Gemini 3, réduire les pixels n'économise rien : le compteur est plat (1 120 tokens quelle que soit l'image). Le seul levier est media_resolution, et notre routeur sait dire, image par image, quel niveau tient ≥ 95 % de fidélité jugée : sur le corpus, −46,2 % → −68,0 % d'un seul paramètre.
Honnêteté : carte de fidélité établie sur 138 jugements (juge indépendant) de vues simulées— pas encore de facture réelle à montrer. Et l'endpoint Gemini compatible OpenAI ne prend pas encore media_resolution: tant qu'il ne le prend pas, le proxy ne le promet pas dans ses compteurs — posez-le via l'API native, la carte est publiée dans bench/REGLAGES_NATIFS.md.
POST /api/proxy/v1/messages (format Anthropic) POST /api/proxy/v1/chat/completions (format OpenAI)Voir les mesures →
Continuer la visite