La réponse courte
Un message Whizi qui ne part pas correspond à l'un de ces cinq cas : une autre réponse est encore en cours de génération, vous avez envoyé deux fois le même texte, le message lui-même a échoué à la validation, vous avez dépassé une limite par minute ou par heure, ou votre jeton de session a expiré. Whizi nomme la cause dans le texte de l'erreur, donc le message que vous voyez détermine la solution.
| Ce que vous voyez | Code | Pourquoi | Que faire |
|---|---|---|---|
Generation already in progress. Please stop it or wait for it to finish. | 409 | Une autre réponse est en cours sur votre compte | Arrêtez-la, ou attendez |
Duplicate message ignored. Please wait for the current response to finish. | 409 | Le même texte (et image) a déjà été envoyé récemment dans cette conversation | Attendez la réponse déjà en cours |
Too many requests. Please wait and try again. | 429 | Une fenêtre par minute a refusé la requête | Attendez, puis renvoyez |
Hourly message limit reached. Please try again later. | 429 | Le plafond horaire de chat l'a refusé | Attendez, puis renvoyez |
A non-empty message is required. | 400 | Le message est manquant ou ne contient que des espaces | Écrivez quelque chose |
This message is {count} characters, over the 100,000 character limit. Attach a shorter file, or ask about one section at a time. | 400 | Un message a dépassé 100 000 caractères | Divisez-le, ou posez une question sur une section à la fois |
The model is temporarily rate-limited. Please retry shortly. | 429 | Le fournisseur du modèle a répondu à la connexion par un 429 | Réessayez, ou changez de modèle |
Failed to send message. | aucun, un toast du site | L'envoi a échoué et le backend n'a fourni aucun message | Vérifiez votre connexion et renvoyez |
Something went wrong. Please retry. | 500 | Toute erreur non gérée sur le backend | Renvoyez, puis signalez-le si cela se répète |
Invalid or expired session token. | 401 | La vérification du jeton a échoué | Actualisez la page et reconnectez-vous |
Les refus liés à une limite de débit sont annulés, donc une requête refusée ne dépense jamais de message sur votre crédit d'utilisation.
Rien ne se passe quand vous appuyez sur Entrée
Si Entrée ne fait absolument rien, c'est qu'une réponse est encore en cours de génération. La zone de saisie ignore délibérément Entrée pendant qu'une réponse est en cours, ce n'est donc pas une touche qui n'a pas été prise en compte. Maj et Entrée insère toujours un retour à la ligne.
Whizi exécute une seule génération par compte à la fois, imposée par un verrou par utilisateur, donc deux appareils ne peuvent jamais générer en même temps pour le même compte. Une seconde tentative est refusée avec Generation already in progress. Please stop it or wait for it to finish., HTTP 409, code generation_in_progress. Le même message est renvoyé quand le coordinateur de génération signale un conflit au moment de la connexion.
Envoyer le même texte deux fois renvoie Duplicate message ignored. Please wait for the current response to finish., HTTP 409, code duplicate_message. Cela se déclenche quand le même texte de message (et la même image) a déjà été envoyé récemment à cette conversation, ce qui est exactement ce que produit un double clic ou un second Entrée impatient.
La solution est la même dans les deux cas : arrêtez la réponse en cours, ou laissez-la se terminer. L'arrêt est géré côté serveur. Le coordinateur annule la lecture du fournisseur, sauvegarde tout texte déjà arrivé, libère le verrou et rembourse un tour non livré. Si un verrou reste bloqué par erreur, il se rétablit tout seul : un verrou devient récupérable dès que son détenteur est jugé orphelin ou bloqué, et les verrous expirés sont nettoyés selon un calendrier.
Si un arrêt laisse un vide, la bulle de l'assistant affiche Generation stopped., le texte enregistré quand une génération est arrêtée et qu'aucun texte partiel n'a été capturé. Generation stopped, but it could not be saved. signifie que l'arrêt a fonctionné mais que la sauvegarde de la réponse partielle a échoué.
Le message est refusé avant même qu'un modèle ne le voie
Ce sont des refus de validation HTTP 400 levés avant que quoi que ce soit n'atteigne un modèle. Rien n'a été envoyé en amont.
| Message | Code | Déclencheur |
|---|---|---|
A non-empty message is required. | empty_message | content est manquant ou ne contient que des espaces |
A model is required. | invalid_model | model est manquant ou vide |
That model is not available for text chat. | unsupported_model | L'identifiant du modèle ne correspond à aucun modèle de texte dans le catalogue |
This message is {count} characters, over the 100,000 character limit. Attach a shorter file, or ask about one section at a time. | message_too_long | Un seul message a dépassé 100 000 caractères |
That system prompt is missing or over the 32,000 character limit. | invalid_system_prompt | Le prompt système est manquant ou dépasse 32 000 caractères |
That image reference is not valid. | invalid_image_url | La référence d'image n'est pas une chaîne, ou dépasse 2 048 caractères |
This conversation has {count} messages, over the 100 message limit. | too_many_messages | La route de chat de l'application a refusé une transcription contenant plus de 100 messages dans une seule requête |
Le plafond de 100 000 caractères compte le message entier, y compris tout texte extrait d'une pièce jointe. Pour savoir ce que fait Whizi quand le texte extrait d'une pièce jointe ne rentre pas dans le budget du message, voir l'échec de l'envoi de fichier.
Les limites de débit, et un refus qui n'a rien à voir avec la vitesse
Les deux messages de limite de débit 429 figurent dans le tableau ci-dessus, et tous deux portent le code rate_limit_reached. Une requête refusée est annulée, donc un 429 ne dépense jamais de message sur votre crédit d'utilisation : attendez la fin de la fenêtre puis renvoyez. Les chiffres des fenêtres et les crédits par forfait qui les sous-tendent sont détaillés sur les limites de débit et à court de crédits.
Un refus de la même famille n'a rien à voir avec la vitesse : Account sharing limit reached. Please use your own Whizi account., HTTP 403, code account_sharing_limit, se déclenche quand plus de 3 appareils ou clés de session distincts ont été vus sur un même compte au cours des dernières 24 heures. Attendre une minute ne le fait pas disparaître.
La réponse démarre, puis s'arrête ou ne s'affiche jamais
Une fois la connexion ouverte, un échec vient soit du fournisseur du modèle, soit de la mécanique qui transporte le flux. Les messages diffèrent selon l'origine de l'échec.
| Message | D'où cela vient |
|---|---|
The model is temporarily rate-limited. Please retry shortly. | HTTP 429 provider_rate_limited, quand le fournisseur répond à la connexion par un 429 |
The model provider rejected the request. | Utilisé quand le corps d'erreur du fournisseur ne peut pas être analysé, ou donne un message vide |
The model provider returned an empty stream. | HTTP 502, l'amont a répondu OK mais n'a envoyé aucun contenu |
The model provider returned an error. | Événement d'erreur dans le flux quand le fournisseur envoie une trame d'erreur sans message propre |
The model stream was interrupted. | Événement d'erreur dans le flux pour tout autre échec en cours de flux |
Generation failed mid-stream. | La génération s'est terminée en échec après que des octets avaient déjà été envoyés |
Generation failed to start. | Le texte de repli interne pour un échec de démarrage du coordinateur qui ne porte pas de message propre |
The generation stream is unavailable. | Levé quand le coordinateur ne peut pas restituer un flux auquel se rattacher |
Generation aborted before it started. | Levé comme une AbortError quand le client se déconnecte avant que la connexion en amont ne se termine |
Something went wrong. Please retry. | HTTP 500 internal_error, le corps pour toute erreur backend non gérée |
Sorry, there was an error generating the response. | Écrit dans la bulle de l'assistant quand un flux se termine sans message final ni contenu accumulé |
Tout échec en amont autre qu'un 429 est un HTTP 502 provider_error portant le message du fournisseur, tronqué à 300 caractères. Sur le chemin en cours de flux, il n'y a pas d'événement d'erreur dans le flux : la connexion se rompt simplement.
L'un de ces messages est un constat plutôt qu'un message. Generation aborted before it started. est levé comme une AbortError quand le client se déconnecte avant que la connexion en amont ne se termine, et la route répond à ce cas par un HTTP 408 avec un corps vide, donc le message est ce que le serveur consigne, pas ce que le navigateur affiche. Dans une trace réseau, un 408 vide sur la route de génération signifie que la requête a disparu avant qu'un modèle ne soit atteint.
Le filet de sécurité est en dessous de tout cela : tout ce que le backend ne reconnaît pas se termine en HTTP 500 internal_error avec le corps Something went wrong. Please retry. HTTP 500 n'identifie pas de cause. Renvoyez une fois, puis contactez le support si cela se répète.
Que faire : renvoyez, et si cela se répète, passez à un autre modèle dans la même conversation. Ces erreurs proviennent d'un point situé en amont de Whizi, pas de votre compte ni de vos réglages.
Une chose que vous n'avez pas besoin de faire, c'est de garder l'onglet ouvert. La génération s'exécute dans un Durable Object par conversation, donc fermer l'onglet en plein flux ne tue pas la réponse et celle-ci reste enregistrée. Un onglet rouvert ou un second appareil peut se rattacher à une génération déjà en cours. The generation stream is unavailable. est levé quand le coordinateur ne peut pas restituer un flux auquel se rattacher. Rechargez la conversation et lisez ce qui a été enregistré plutôt que d'attendre le flux.
Dans la vue de comparaison côte à côte, les messages par côté sont encore différents : The model did not respond. Please try again. quand une réponse de génération n'est pas OK et ne porte aucune erreur lisible, Could not start a comparison chat. quand le chat sous-jacent ne peut pas être créé, et Something went wrong. en dernier recours. Ce dernier est la forme courte, sans phrase de nouvelle tentative après, ce qui permet de le distinguer du corps Something went wrong. Please retry. d'un 500.
Votre session a expiré
Les échecs d'authentification ressemblent à des échecs d'envoi parce qu'ils apparaissent au moment de l'envoi. Authentication required. est un HTTP 401 unauthorized et se déclenche quand la requête ne porte aucun jeton porteur. Invalid or expired session token. porte le même statut et le même code quand la vérification du jeton échoue pour une raison quelconque : jeton expiré, signature incorrecte, émetteur erroné.
Côté site web, vous pouvez plutôt voir Failed to retrieve session token., que le site lève chaque fois que la récupération du jeton ne renvoie rien avant un appel de liste de conversations, de chargement de conversation, de suppression, de renommage ou d'envoi de fichier. La vue de comparaison a sa propre formulation : Your session expired. Please refresh and try again.
La solution est d'actualiser la page, puis de se reconnecter si l'actualisation ne restaure pas la session. Rien n'est perdu sur le compte, et aucun message n'a été envoyé.
Ce n'est pas un échec, c'est une limite
Un refus lié au crédit d'utilisation et un refus lié au forfait ne sont pas des échecs d'envoi. La requête était correctement formée et Whizi l'a refusée délibérément, il n'y a donc rien à corriger dans la zone de saisie : les refus liés au crédit sont couverts dans à court de crédits, et un modèle affiché comme verrouillé est couvert dans le dépannage.
Un prompt refusé par le filtrage de contenu n'est pas non plus un échec d'envoi. Le filtrage s'exécute avant toute réservation de crédit et avant l'appel au fournisseur, donc un prompt refusé ne coûte aucun crédit, et le refus arrive sous forme de HTTP 400 avec la raison affichée dans le chat.
Modifier un message envoyé échoue à la place
Modifier un prompt et le renvoyer, c'est ainsi que vous rejouez un tour, puisque Whizi n'a pas de commande de régénération. Ce chemin a ses deux propres échecs.
That message is no longer part of this conversation. Reload and try again. est un HTTP 404 replace_anchor_not_found, renvoyé quand la modification désigne un identifiant de message qui ne fait plus partie de la conversation. Rechargez la conversation. Le client conserve un identifiant de message que le serveur n'a plus.
Conversation not found. est un HTTP 404 not_found, renvoyé quand l'identifiant de conversation n'existe pas ou n'appartient pas à l'appelant. Il apparaît sur la route de génération ainsi que sur les routes de lecture, suppression, renommage, ajout de message, changement de version et partage.
- Entrée qui ne fait rien signifie qu'une réponse est encore en cours de génération, pas une touche manquée
- Une seule génération s'exécute par compte à la fois, sur tous vos appareils
- Un envoi en double est ignoré volontairement, avec un 409 et un message qui le précise
- Le chat a un plafond par minute et par heure qu'aucun forfait ne lève
- Une requête bloquée par une limite de débit ne coûte rien sur votre crédit
- Un message est plafonné à 100 000 caractères
- Les erreurs de fournisseur se corrigent en renvoyant ou en changeant de modèle, pas dans les réglages
- Fermer l'onglet en pleine réponse ne tue pas la réponse
- Les erreurs d'authentification se corrigent en actualisant et en se reconnectant
Questions fréquentes
Que signifie « Generation already in progress. Please stop it or wait for it to finish. » ?
Arrêtez la réponse en cours, ou attendez qu'elle se termine, puis renvoyez. Le refus est un HTTP 409 avec le code generation_in_progress, et il apparaît aussi quand un autre appareil génère sur le même compte. L'arrêt est géré côté serveur : la réponse partielle est sauvegardée, le verrou est libéré, et un tour non livré est remboursé.
Ma réponse s'est arrêtée à mi-chemin. Ai-je été facturé ?
Un échec en cours de flux rompt la connexion sans événement d'erreur dans le flux, et tout texte arrivé avant la rupture est conservé. Si vous arrêtez vous-même une génération, le serveur annule la lecture du fournisseur, sauvegarde la réponse partielle et rembourse un tour non livré. En cas d'échec répété du fournisseur, passez à un autre modèle dans la même conversation, puisque l'erreur provient d'un point situé en amont de Whizi. Si ce que vous obtenez est un HTTP 500 avec « Something went wrong. Please retry. », c'est le corps générique pour une erreur backend non gérée plutôt qu'un problème de modèle, donc renvoyez une fois et signalez-le si cela persiste.
Fermer l'onglet annule-t-il ma réponse ?
Non, à une exception près, très étroite, tout au début. Si le client se déconnecte avant que la connexion en amont ne se termine, le serveur enregistre « Generation aborted before it started. » et répond par un HTTP 408 avec un corps vide, ce qui explique pourquoi cette requête semble n'avoir rien renvoyé du tout. Passé ce point, la réponse survit au client, parce que la génération s'exécute dans un Durable Object par conversation et que la réponse reste enregistrée. « The generation stream is unavailable. » est levé quand le coordinateur ne peut pas restituer un flux auquel se rattacher, et recharger la conversation affiche ce qui a été sauvegardé.
Whizi indique que mon message dépasse la limite de 100 000 caractères. Que faire ?
Un seul message est plafonné à 100 000 caractères et le refus est un HTTP 400, code message_too_long. Le décompte couvre le message entier, y compris le texte extrait d'une pièce jointe. Posez une question sur une section à la fois, ou joignez un fichier plus court. Quand le texte extrait d'une pièce jointe ne rentre pas dans le budget du message, Whizi le tronque au lieu de refuser et vous prévient que seule la première partie a été envoyée.