À propos du projet

zai-proxy est un proxy inverse basé sur Go qui se place devant l'API Z.AI Claude, ajoutant des fonctionnalités d'observabilité et de fiabilité que l'accès API brut ne fournit pas. Il se compose de deux composants principaux : un service proxy et un tableau de bord de surveillance. Le proxy écoute sur le port 8080, transmet les requêtes à l'API LLM en amont et exporte des métriques Prometheus sur /metrics. Les capacités clés incluent le suivi des jetons (comptage des jetons d'entrée et de sortie par requête en utilisant l'utilisation rapportée par l'API ou l'estimation tiktoken comme solution de repli), la limitation de débit adaptative (suivi des réponses 429 en amont avec un estimateur de plafond EWMA qui maintient automatiquement juste en dessous de la limite et sonde périodiquement les augmentations de plafond), et le passage en continu SSE sans mise en mémoire tampon. Il prend également en charge les déploiements bleu/vert et canari via une étiquette DEPLOYMENT_VARIANT pour comparer les versions de proxy ou les configurations de modèle côte à côte. Le tableau de bord est un backend Go avec un frontend React qui récupère le point de terminaison Prometheus du proxy toutes les 5 secondes, maintient des instantanés à double résolution dans des anneaux mémoire bornés (résolution de 5 secondes pendant 24 heures, résolution de 1 minute pendant 7 jours) et diffuse les mises à jour au navigateur via SSE. Il affiche le débit des requêtes, les percentiles de latence, les totaux d'utilisation des jetons, les taux d'erreur et les panneaux de comparaison par variante. Le proxy expose un ensemble complet de métriques Prometheus, y compris les compteurs de requêtes, les histogrammes de latence, les taux de jetons, les taux d'erreur, les temps d'attente de limitation de débit, les tentatives de nouvelle tentative, l'utilisation des travailleurs et les informations de build, toutes étiquetées par modèle et variante de déploiement. La configuration est gérée via des variables d'environnement couvrant les clés API, les URL cibles, les paramètres de limitation de débit, l'interrogation des quotas et le comportement de nouvelle tentative.