freedzhost.cloud

Additionner les free tiers : le quota-warden

Un abonnement frontier (Kimi, Claude…) se vide par cycles : quelques heures de travail intense, puis un mur jusqu'au reset. Pendant ce temps, huit providers gratuits (Groq, Cerebras, Gemini, Cloudflare, OpenRouter, Cohere, NVIDIA NIM, Mistral) offrent chacun quelques centaines ou milliers de requêtes par jour. Aucun ne remplace un abonnement. Mais additionnés, ils couvrent largement le routage, la validation, les petites tâches et une partie du code — à condition de trois ingrédients : un peu d'automation, la téléportation du thread, et la passation entre providers.

1. L'addition que personne ne fait à la main

Changer de provider à la main, c'est copier le contexte, trouver la bonne clé, prier pour que le quota tienne. Personne ne le fait dix fois par jour. Notre réponse tient en trois pièces :

2. Les routes : escalade en cascade

Les modèles sont rangés dans des routes nommées qui cascadent toutes seules :

Quand Groq répond 429, la cascade essaie Cerebras, puis Gemini, puis Mistral… La requête aboutit quelque part, et le warden a appris quelque chose. La fois suivante, le modèle épuisé n'est même plus essayé : il est grisé jusqu'à son reset.

3. Ce que ça change concrètement

Avant : le quota frontier vide = arrêt de travail jusqu'au cycle suivant. Après : le travail de fond (routage, relecture, petites tâches, rédaction) continue sur les free tiers additionnés, et le quota frontier est réservé à ce qui le justifie vraiment — le gros code, la relecture finale, les décisions dures. L'abonnement ne change pas ; ce qu'on lui demande change. Un cycle de quota frontier ne borne plus la journée, il borne seulement les tâches de pointe.

Règles de la maison

Pièges que nous avons payés

Les free tiers ne promettent rien : latence variable, modèles plus faibles sur le code complexe, quotas qui changent sans prévenir. Traitez-les comme du bonus, jamais comme du socle.

Un callback de supervision doit être invisible quand il marche et silencieux quand il casse. Notre première version faisait échouer la requête utilisateur quand le warden était injoignable — exactement l'inverse du but. Tout est en try/except absolu, et les hooks asynchrones sont obligatoires : le proxy n'appelle jamais les synchrones.

Sur le proxy, le nom du modèle dans les logs est l'identifiant amont (openai/gpt-oss-20b), pas votre nom de déploiement. Le warden doit lire model_group, sinon il grise un nom que votre interface ne connaît pas.

Utile ? Dites-nous ce qu'il faut mesurer ensuite.