Qwen3.8 gratuit sur AIHubMix : corriger les 429, « Rate Limited by Provider » et un pool de jetons épuisé

AIHubMix12 min de lecture
Qwen3.8 gratuit sur AIHubMix : corriger les 429, « Rate Limited by Provider » et un pool de jetons épuisé

La plupart des problèmes liés à qwen3.8-max-free et qwen3.8-flash-free viennent de trois sources : les plafonds de l'offre gratuite, la capacité de la campagne que GMI Cloud a réservée en amont, et la vitesse à laquelle les jetons de réflexion et le contexte des agents vident un pool quotidien de 1M de jetons. Certains se manifestent par des erreurs. D'autres par une réponse bizarre ou un quota vide dès l'heure du déjeuner. À côté de ceux-ci, les erreurs courantes de l'API restent valables : une mauvaise clé ou un mauvais identifiant de modèle, un contexte trop long, un historique d'appels d'outils cassé, le mode JSON et la modération de contenu.

Chacun a une solution, et un seul réglage couvre la plupart d'entre eux : le repli au niveau de la clé, depuis les identifiants gratuits vers les modèles payants qwen3.8-max et qwen3.8-flash. Configurez-le une fois, et une amont surchargé, un quota épuisé ou la fin de la campagne, prévue vers le 13 novembre 2026 (heure du Pacifique), ne deviendront plus une panne.

Aperçu rapide

Ce que vous voyez Cause probable Solution
429 après 10 appels en une minute Plafond gratuit par minute Espacer les requêtes, ou basculer
429 pour le reste de la journée Plafond quotidien de requêtes ou de jetons Attendre la réinitialisation, ou basculer
« Rate limited by provider » Capacité de la campagne saturée en amont Temporiser et réessayer, ou basculer
Une réponse indiquant que l'essai est épuisé 10 appels d'essai consommés, sans recharge Recharger 1 $ ou plus
La requête reste bloquée, puis expire Réflexion maximale avant le premier jeton Activer le streaming, augmenter le délai d'expiration du client
Jetons quotidiens épuisés après quelques exécutions d'agent Réflexion plus contexte renvoyé Désactiver la réflexion, limiter le contexte
Les identifiants gratuits ne fonctionnent plus Campagne terminée ou crédits épuisés Passer aux identifiants payants

Erreurs de l'offre gratuite et de la campagne

429 dû aux plafonds de l'offre gratuite

Ce que vous voyez. Après une recharge de 1 $ ou plus, les modèles gratuits d'AIHubMix autorisent 10 requêtes par minute, 100 par jour et 1M de jetons par jour, partagés sur l'ensemble du catalogue gratuit. « Au-delà d'un plafond, l'API renvoie 429 jusqu'au début de la minute ou du jour suivant », selon la page des modèles gratuits. La référence des codes de statut HTTP d'AIHubMix indique pour le 429 lié à la fréquence des requêtes le message : « The xx model Too many requests; please try again later. »

Pourquoi. Les plafonds sont définis par compte, et non par modèle. Une tâche par lots sur un autre modèle gratuit consomme la même minute et la même journée.

Comment reproduire. Onze requêtes rapides à la suite atteignent le plafond par minute. Cela consomme 11 de vos 100 requêtes quotidiennes :

for i in $(seq 1 11); do
  curl -s -o /dev/null -w "%{http_code}\n" https://aihubmix.com/v1/chat/completions \
    -H "Authorization: Bearer $AIHUBMIX_API_KEY" \
    -H "Content-Type: application/json" \
    -d '{"model":"qwen3.8-flash-free","messages":[{"role":"user","content":"hi"}],"max_tokens":16}'
done

Si les 11 tombent dans une même minute, les dix premières renvoient 200 et la onzième renvoie 429.

Solution. Limitez les tâches par lots à moins de 10 requêtes par minute avec un simple limiteur de débit. Pour le plafond quotidien, attendez la réinitialisation ou configurez le repli (voir ci-dessous) afin que le surplus soit envoyé au modèle payant.

"Limite de débit atteinte par le fournisseur – contactez le support pour demander une concurrence plus élevée ou réessayez plus tard."

Ce que vous voyez. Lors du test interne d'AIHubMix du 16 octobre, un appel à qwen3.8-max-free a renvoyé un HTTP 429 avec ce corps de message, alors que la même clé continuait de fonctionner avec qwen3.8-flash-free :

{"error":{"message":"Model qwen3.8-max-free rate limited by provider – contact support to request higher concurrency or try again later. (tid: …)","type":"service_unavailable","param":"","code":"rate_limit_exceeded"}}

La référence des codes de statut d'AIHubMix liste le même message sous le code 503, vérifiez donc les deux codes.

Pourquoi. Les identifiants gratuits s'appuient sur une capacité que GMI Cloud a réservée pour la campagne. Lorsque de nombreuses personnes appellent Max en même temps, ce pool amont est saturé pendant un certain temps. Ce n'est pas votre quota : les autres modèles gratuits continuent de fonctionner avec la même clé.

Solution. Réessayez avec un backoff exponentiel (par exemple 30, 60 puis 120 secondes). Pour les requêtes qui ne peuvent pas attendre, laissez le repli les envoyer vers le qwen3.8-max payant. Conservez le tid si vous contactez le support : il identifie la requête.

Une réponse indiquant que votre essai est épuisé

Ce que vous voyez. Aucune erreur. Un nouveau compte dispose de 10 appels d'essai au total, partagés entre tous les modèles gratuits. Après le dixième, l'API continue de répondre, mais la réponse est une note indiquant que l'essai est épuisé. Une application qui affiche la sortie du modèle aux utilisateurs leur affichera cette note.

Solution. Rechargez 1 $ ou plus. Cela fait passer le compte de manière permanente aux quotas quotidiens décrits plus haut.

Délais d'expiration côté client sur Max

Ce que vous voyez. Une requête sans streaming vers qwen3.8-max-free reste bloquée, puis échoue avec un délai d'expiration dans votre client HTTP, votre proxy ou votre outil.

Pourquoi. Max réfléchit avant son premier jeton visible. AIHubMix mesure une latence d'environ 55 secondes et un débit d'environ 9 jetons par seconde sur la route gratuite. Une réponse de 4K jetons sans streaming met donc environ huit minutes à arriver d'un seul bloc. Tout élément du chemin avec un délai plus court abandonne avant. Le repli n'aide pas ici : selon les règles de repli d'AIHubMix, un délai d'expiration côté client ne le déclenche pas.

Solution. Activez le streaming de la réponse, augmentez le délai d'expiration du client (timeout=900 dans le client Python d'OpenAI couvre les longues réponses) et utilisez Flash pour tout ce qui est interactif.

Erreurs courantes de l'API

Toutes les erreurs sur les identifiants gratuits ne concernent pas les quotas. Celles-ci sont tout aussi fréquentes, sur les identifiants gratuits comme sur les payants. AIHubMix transmet la plupart des erreurs 400 telles quelles depuis le modèle amont, selon sa référence des codes de statut. Les identifiants gratuits s'appuient sur GMI Cloud et les payants sur Alibaba Cloud, donc la formulation exacte d'une erreur 400 peut différer selon la route. Les messages ci-dessous sont cités depuis la référence d'AIHubMix et depuis la référence des codes d'erreur d'Alibaba Cloud.

Statut Erreur Cause habituelle
401 Non autorisé Clé incorrecte ou absente
503 Identifiant de modèle incorrect Faute de frappe, ou identifiant d'une autre plateforme
403 Clé non autorisée pour le modèle Modèle non activé sur la clé
400 Plage de longueur d'entrée Contexte au-delà de la limite
400 Rôle « tool » sans « tool_calls » Historique d'appels d'outils cassé
400 Erreurs du mode JSON Formulation du prompt ou réflexion
400 Contenu inapproprié Modération de contenu

401: "Non autorisé – le jeton d'accès est invalide ou a expiré."

Pourquoi. La clé est incorrecte, révoquée ou expirée. Sans aucun en-tête Authorization, le message est « Unauthorized – no access token supplied; please log in and include a valid token. » Les causes habituelles sont une variable d'environnement non définie dans le shell qui exécute le code, de sorte qu'une clé vide est envoyée, ou une clé provenant d'une autre plateforme, comme QwenCloud ou GMI Cloud, envoyée à AIHubMix.

Solution. Vérifiez la variable dans le même shell : echo ${AIHUBMIX_API_KEY:0:3} doit afficher sk-. Les clés AIHubMix ne fonctionnent que sur https://aihubmix.com/v1, et les clés des autres plateformes n'y fonctionnent pas.

503: "ID de modèle incorrect. Veuillez demander l'accès à la page du modèle ou vous n'avez pas l'autorisation d'utiliser ce modèle"

Pourquoi. Les identifiants de modèle doivent correspondre exactement. Les identifiants gratuits sont qwen3.8-max-free et qwen3.8-flash-free, tout en minuscules, avec un trait d'union avant free. Les identifiants copiés d'autres plateformes, comme Qwen/Qwen3.8-Max de GMI Cloud, n'existent pas sur AIHubMix. Un copier-coller peut même ne déclencher aucune erreur : l'identifiant qwen3.8-max de QwenCloud est un identifiant AIHubMix valide, mais il correspond au modèle payant, si bien que la requête vous est facturée sans que vous le remarquiez.

Comment reproduire.

curl -s https://aihubmix.com/v1/chat/completions \
  -H "Authorization: Bearer $AIHUBMIX_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"model":"qwen-3.8-max-free","messages":[{"role":"user","content":"hi"}]}'

Solution. Copiez l'identifiant depuis la page du modèle. Et comme cette erreur revient en 503, une logique de nouvelle tentative qui traite tout 5xx comme temporaire réessaiera indéfiniment une faute de frappe ; considérez ce message comme permanent.

403: "Interdit – la clé (6 derniers chiffres de la clé de requête) n'est pas autorisée à accéder au modèle demandé."

Pourquoi. Les clés AIHubMix peuvent être limitées à une liste de modèles. Une clé créée pour un autre projet, avec sa propre liste de modèles, ne peut pas accéder aux identifiants gratuits de Qwen3.8 tant que vous ne les ajoutez pas.

Solution. Modifiez la clé dans la gestion des clés API et ajoutez qwen3.8-max-free et qwen3.8-flash-free. Si vous configurez le repli, ajoutez aussi les modèles payants de secours : le repli ignore les modèles situés en dehors de la liste de la clé.

400: "La plage de longueur d'entrée doit être [1, xxx]"

Pourquoi. Il s'agit du message d'Alibaba pour une entrée dépassant la limite de contexte du modèle ; le nombre à la place de xxx correspond à cette limite. Les sessions d'agents sont la cause habituelle, car l'historique grandit à chaque tour. Alibaba précise aussi que les longs prompts avec la réflexion activée « peuvent entraîner une troncature de la réponse ou un délai d'expiration de la requête ».

Solution. Réduisez l'historique, démarrez une nouvelle session pour une nouvelle tâche, ou activez la compaction de votre outil. Réduisez-le toutefois avec précaution, sinon vous rencontrerez l'erreur suivante.

400: les messages avec le rôle "tool" doivent être une réponse à un message précédent contenant "tool_calls"

La référence d'Alibaba liste ce message, coquille comprise, ainsi que son symétrique : « An assistant message with "tool_calls" must be followed by tool messages responding to each "tool_call_id" ». Les utilisateurs de Qwen Code ont signalé le premier dans le ticket #2360.

Pourquoi. L'historique envoyé au modèle contient un résultat d'outil dont l'appel a été supprimé lors de la réduction, ou un appel d'outil dont le résultat manque. La réduction manuelle de l'historique et la compaction du contexte sont les principaux responsables.

Solution. Traitez un appel d'outil et ses résultats comme une seule unité. Chaque tool_call_id d'un message assistant doit être suivi immédiatement d'un message tool correspondant :

messages = [
    {"role": "user", "content": "What's the weather in Hangzhou?"},
    {"role": "assistant", "content": None, "tool_calls": [{
        "id": "call_1", "type": "function",
        "function": {"name": "get_weather", "arguments": "{\"city\": \"Hangzhou\"}"},
    }]},
    {"role": "tool", "tool_call_id": "call_1", "content": "{\"temp_c\": 21}"},
]
# When trimming, drop messages[1] and messages[2] together, never just one of them.

400 : mode JSON

La référence d'Alibaba liste deux erreurs liées au mode JSON :

  • "'messages' doit contenir le mot 'json' sous une forme quelconque pour utiliser 'response_format' de type 'json_object'."
  • "La réponse en mode Json n'est pas prise en charge lorsque enable_thinking est true"

Pourquoi. La première correspond à la même règle que le mode JSON d'OpenAI : le prompt doit mentionner JSON. La seconde compte davantage pour Qwen3.8, où la réflexion est activée par défaut, si bien qu'une requête json_object qui fonctionne sur d'autres modèles peut échouer ici. La référence d'Alibaba ne précise pas quels modèles renvoient le second message, testez donc sur l'identifiant que vous utilisez.

Solution. Mentionnez JSON dans le prompt et désactivez la réflexion pour les appels en mode JSON :

curl -s https://aihubmix.com/v1/chat/completions \
  -H "Authorization: Bearer $AIHUBMIX_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "qwen3.8-flash-free",
    "messages": [{"role": "user", "content": "Reply in JSON with the city and date: meet in Hangzhou on Nov 3."}],
    "response_format": {"type": "json_object"},
    "enable_thinking": false
  }'

400 : « Input data may contain inappropriate content. »

Pourquoi. Le code est data_inspection_failed. Alibaba Cloud contrôle les entrées et les sorties des modèles qu'il héberge, ce qui inclut les identifiants payants vers lesquels le repli envoie les requêtes. Les variantes disent « Output data may contain inappropriate content. » ou « Input or output data may contain inappropriate content. » Le texte généré par les utilisateurs et collé dans un prompt, comme des pages extraites ou des tickets de support, est le déclencheur habituel.

Solution. Repérez le passage en cause en découpant l'entrée, puis filtrez-le ou reformulez-le. Renvoyer la même entrée donne la même réponse.

La panne silencieuse : un pool de jetons épuisé

Rien ne déclenche d'erreur tant que le pool de 1M de jetons n'est pas vide, puis tout renvoie 429 d'un coup. Trois éléments le vident plus vite qu'on ne le pense.

Jetons de réflexion

Les deux modèles raisonnent par défaut, et Alibaba facture le raisonnement comme des tokens de sortie ; sur la route gratuite, ces tokens comptent dans votre pool quotidien. Dans le test d'AIHubMix, une réponse de deux phrases de qwen3.8-flash-free a utilisé 89 tokens de sortie, dont 36 pour le raisonnement. Max raisonne davantage : Artificial Analysis a mesuré qu'il utilisait 190M de tokens de sortie sur son index, contre une médiane de 87M.

Pour l'extraction, la mise en forme et les recherches courtes, désactivez le raisonnement. enable_thinking est l'interrupteur documenté par Alibaba pour Qwen3.8 ; avec le SDK OpenAI, il se place dans extra_body :

resp = client.chat.completions.create(
    model="qwen3.8-flash-free",
    messages=[{"role": "user", "content": "Return only the invoice number: INV-2026-0042, due Nov 3"}],
    extra_body={"enable_thinking": False},
)
print(resp.choices[0].message.content)
print(resp.usage.completion_tokens_details)

Vérifiez que reasoning_tokens dans le bloc d'utilisation tombe à 0. Si ce n'est pas le cas, le paramètre n'a pas atteint le modèle sur cette route, et le raisonnement continue de consommer des tokens.

Les boucles d'agents renvoient le contexte

Les agents de code envoient l'ensemble de la conversation, y compris le contenu des fichiers et les résultats d'outils, à chaque tour. Une session qui a atteint 40K tokens puis tourne 20 tours de plus envoie 800K tokens en entrée : la majeure partie du pool quotidien avant même toute sortie. Limitez la fenêtre de contexte dans les paramètres de modèle de votre outil, démarrez de nouvelles sessions pour chaque nouvelle tâche et utilisez la compaction si votre outil la propose.

Une grosse requête

Max et Flash acceptent tous deux 1M tokens de contexte, soit la même taille que le pool quotidien. Une seule requête qui remplit la fenêtre épuise la journée.

Quand la campagne prend fin

La période gratuite se termine vers le 13 novembre 2026 (heure du Pacifique), ou plus tôt si les crédits de campagne de GMI Cloud sont épuisés. Ensuite, les identifiants -free ne seront plus gratuits. Le code qui bascule déjà sur les identifiants payants continue de fonctionner. Le code qui appelle directement les identifiants gratuits doit subir un seul changement : supprimer -free du nom du modèle.

Configurer le repli une fois pour toutes

AIHubMix peut basculer de modèle au niveau de la passerelle lorsque le modèle principal échoue, configuré par clé d'API, sans modification de votre code. Model mapping and fallback détaille l'ensemble des règles. Pour les identifiants gratuits de Qwen3.8 :

  1. Ouvrez la gestion des clés d'API dans la console AIHubMix et modifiez la clé utilisée par votre application.
  2. Sous « Fallback models on error », ajoutez qwen3.8-max en premier et qwen3.8-flash en second.
  3. Continuez d'appeler qwen3.8-max-free dans votre code.

Ne mettez pas les identifiants gratuits dans la liste de secours. Un modèle gratuit ne peut être que le modèle principal ; dans la liste de secours, il est ignoré sans avertissement.

Situation Bascule ?
Le modèle gratuit atteint un quota ou une limite de débit Oui, vers une solution de secours payante
Tous les canaux amont échouent avant le début de la réponse Oui
Le flux a déjà commencé Non
Votre client a dépassé le délai d'attente Non
Votre propre clé est invalide ou son solde est insuffisant Non

Les requêtes de repli sont facturées au prix du modèle payant, gardez donc un solde suffisant sur le compte. Si les requêtes de repli commencent à échouer avec une erreur 403 « Your account balance is insufficient. Please recharge your account to continue using the API. », rechargez le compte : le repli ne contourne pas votre propre solde. Une fois le solde passé sous -1 $, les modèles gratuits cessent également de fonctionner, jusqu'à ce que vous rechargiez.

Pour savoir quel modèle a répondu, lisez les en-têtes de réponse :

curl -s -i https://aihubmix.com/v1/chat/completions \
  -H "Authorization: Bearer $AIHUBMIX_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"model":"qwen3.8-max-free","messages":[{"role":"user","content":"hi"}]}' \
  | grep -i -E 'x-aihubmix-(model|fallback)'

X-Aihubmix-Fallback: true signifie que la requête a basculé. X-Aihubmix-Model indique le modèle qui a répondu, celui-là même qui vous est facturé.

Outils de code

Tout outil acceptant un fournisseur compatible OpenAI fonctionne avec les identifiants gratuits, notamment OpenCode, Cline, Kilo Code, Qwen Code et Hermes Agent. AIHubMix propose une page de configuration pour chacun ; le guide OpenCode est un bon point de départ. Les valeurs sont les mêmes dans tous les outils :

Paramètre Valeur
Type de fournisseur Compatible OpenAI
URL de base https://aihubmix.com/v1
Clé d'API Votre clé AIHubMix
ID du modèle qwen3.8-flash-free ou qwen3.8-max-free
Fenêtre de contexte Jusqu'à 1M ; réglez plus bas pour préserver le pool
Sortie maximale Jusqu'à 131K

Deux problèmes connus concernent tous les outils. Les boucles d'agents vident le pool de tokens partagé, comme décrit plus haut. Et la latence élevée de Max le rend lent comme modèle principal dans un agent interactif. Les outils qui permettent de choisir des modèles distincts pour la planification et l'édition, comme les modes Plan et Act de Cline, peuvent confier la planification à Max et les modifications à Flash.

Un test de fumée de 15 minutes. Pointez votre outil vers qwen3.8-flash-free et demandez-lui d'ajouter un test unitaire pour une petite fonction dans un vrai dépôt, puis d'exécuter ce test. Le succès ressemble à ceci : l'agent lit le fichier, écrit le test, l'exécute via un appel d'outil, et le journal d'utilisation AIHubMix montre les requêtes sous le modèle gratuit à 0 $. Répétez ensuite l'étape de planification avec qwen3.8-max-free et vérifiez le temps et les tokens qu'il a consommés.

Liste de contrôle

  • Rechargement d'au moins 1 $, pour que le quota quotidien remplace les 10 appels d'essai
  • ID du modèle copié exactement depuis la page du modèle, et activé sur la clé
  • Tâches par lots cadencées à moins de 10 requêtes par minute
  • Requêtes Max en streaming, avec un délai d'attente client de 10 minutes ou plus
  • Raisonnement désactivé pour les requêtes simples, et reasoning_tokens vérifié
  • Contexte des agents limité, avec de nouvelles sessions pour chaque nouvelle tâche
  • La réduction de l'historique garde chaque appel d'outil et ses résultats ensemble
  • Les appels en mode JSON mentionnent JSON et s'exécutent avec le raisonnement désactivé
  • Repli configuré sur qwen3.8-max, puis qwen3.8-flash
  • Un solde reste disponible pour les requêtes de repli
  • Un rappel programmé vers le 13 novembre, date de fin de la période gratuite

FAQ

Pourquoi ai-je une erreur 429 sur qwen3.8-max-free alors que je l'ai à peine utilisé ?
Soit un autre modèle gratuit de votre compte a épuisé la limite partagée par minute ou par jour, soit la capacité amont de la campagne est saturée. Le message d'erreur indique laquelle : « rate limited by provider » signifie que la limite vient de l'amont.

Pourquoi ma requête renvoie-t-elle « Incorrect model ID » ?
Le nom du modèle ne correspond pas exactement à un identifiant AIHubMix. Utilisez qwen3.8-max-free ou qwen3.8-flash-free, en minuscules ; les identifiants de GMI Cloud ou d'autres plateformes n'existent pas ici. L'erreur revient avec un code 503, vérifiez donc que votre logique de nouvelle tentative ne la relance pas indéfiniment.

Le repli coûte-t-il de l'argent ?
Seulement lorsqu'il se produit. Une requête qui bascule est facturée au prix du modèle payant qui a répondu.

Puis-je mettre qwen3.8-flash-free dans la liste de repli ?
Non. Les modèles gratuits ne peuvent être que le modèle principal ; AIHubMix les ignore dans la liste de secours.

Comment empêcher le raisonnement de consommer mes tokens gratuits ?
Passez enable_thinking à false dans extra_body pour les requêtes qui n'ont pas besoin de raisonnement, et vérifiez que reasoning_tokens tombe à 0 dans le bloc d'utilisation.

Pourquoi mon agent de code épuise-t-il le pool quotidien si vite ?
Les agents renvoient toute la conversation à chaque tour. Limitez la fenêtre de contexte, démarrez de nouvelles sessions pour chaque nouvelle tâche et utilisez Flash comme modèle principal de l'agent.

Que deviennent les identifiants gratuits après le 13 novembre ?
Ils cessent d'être gratuits, et plus tôt si les crédits de campagne de GMI Cloud sont épuisés. Passez à qwen3.8-max ou qwen3.8-flash, ou comptez sur le repli que vous avez configuré.

À lire ensuite : la série Qwen3.8 Free

Sources