Un messaggio Whizi non si invia, o la risposta non arriva mai

Risposta rapida

Un messaggio Whizi che non si invia dipende da una di cinque cose: un'altra risposta è ancora in generazione, hai inviato lo stesso testo due volte, hai superato un limite di frequenza al minuto o all'ora, il messaggio non ha superato la validazione, oppure il tuo token di sessione è scaduto. Whizi indica il motivo nel testo dell'errore, e una richiesta bloccata da un limite di frequenza non costa nulla.

La risposta breve

Un messaggio Whizi che non si invia dipende da una di cinque cose: un'altra risposta è ancora in generazione, hai inviato lo stesso testo due volte, hai superato un limite di frequenza al minuto o all'ora, il messaggio stesso non ha superato la validazione, oppure il tuo token di sessione è scaduto. Whizi indica il motivo nel testo dell'errore, quindi la stringa che vedi determina la soluzione.

Cosa vediCodicePerchéCosa fare
Generation already in progress. Please stop it or wait for it to finish.409Un'altra risposta è in esecuzione sul tuo accountFermala, oppure aspetta
Duplicate message ignored. Please wait for the current response to finish.409Lo stesso testo (e immagine) è già stato inviato di recente a questa chatAspetta che la risposta già in corso finisca
Too many requests. Please wait and try again.429Una finestra al minuto ha rifiutato la richiestaAspetta, poi reinvia
Hourly message limit reached. Please try again later.429Il tetto orario della chat l'ha rifiutatoAspetta, poi reinvia
A non-empty message is required.400Il messaggio manca o è solo spazi vuotiScrivi qualcosa
This message is {count} characters, over the 100,000 character limit. Attach a shorter file, or ask about one section at a time.400Un messaggio ha superato i 100.000 caratteriDividilo, oppure chiedi di una sezione alla volta
The model is temporarily rate-limited. Please retry shortly.429Il provider del modello ha risposto alla connessione con un 429Riprova, oppure cambia modello
Failed to send message.nessuno, un toast del sitoL'invio è fallito e il backend non ha fornito alcun messaggioControlla la connessione e reinvia
Something went wrong. Please retry.500Qualsiasi errore non gestito sul backendReinvia, poi segnalalo se si ripete
Invalid or expired session token.401La verifica del token è fallitaRicarica la pagina e accedi di nuovo

I rifiuti per limite di frequenza vengono annullati, quindi una richiesta rifiutata non consuma mai un messaggio dalla tua soglia.

Non succede nulla quando premi Invio

Se Invio non fa nulla, una risposta è ancora in generazione. Il compositore ignora deliberatamente Invio mentre una risposta è in corso, quindi non è un tasto perso. Maiuscole e Invio inserisce comunque una nuova riga.

Whizi esegue una sola generazione per account alla volta, applicata da un blocco per utente, quindi due dispositivi non possono mai generare contemporaneamente per lo stesso account. Un secondo tentativo viene rifiutato con Generation already in progress. Please stop it or wait for it to finish., HTTP 409, codice generation_in_progress. La stessa stringa viene restituita quando il coordinatore di generazione segnala un conflitto al momento della connessione.

Inviare lo stesso identico testo due volte restituisce Duplicate message ignored. Please wait for the current response to finish., HTTP 409, codice duplicate_message. Questo scatta quando lo stesso testo del messaggio (e immagine) è già stato inviato di recente a questa conversazione, ciò che produce un doppio clic o un secondo Invio impaziente.

La soluzione per entrambi i casi è la stessa: ferma la risposta in corso, oppure lasciala finire. L'interruzione è gestita dal server. Il coordinatore annulla la lettura dal provider, salva qualunque testo sia arrivato, rilascia il blocco e rimborsa un turno non consegnato. Se un blocco resta bloccato per qualche motivo, si recupera da solo: un blocco diventa liberabile una volta che il suo titolare viene giudicato orfano o bloccato, e i blocchi scaduti vengono ripuliti a intervalli programmati.

Se un'interruzione lascia un vuoto, la bolla dell'assistente mostra Generation stopped., il testo che viene salvato quando una generazione viene interrotta e non è stato catturato alcun testo parziale. Generation stopped, but it could not be saved. significa che l'interruzione ha funzionato ma il salvataggio della risposta parziale no.

Il messaggio viene rifiutato prima che qualsiasi modello lo veda

Questi sono rifiuti di validazione HTTP 400 sollevati prima che qualcosa raggiunga un modello. Nulla viene inviato a monte.

MessaggioCodiceCausa
A non-empty message is required.empty_messagecontent manca o è solo spazi vuoti
A model is required.invalid_modelmodel manca o è vuoto
That model is not available for text chat.unsupported_modelL'id del modello non corrisponde a un modello di testo nel catalogo
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_longUn singolo messaggio ha superato i 100.000 caratteri
That system prompt is missing or over the 32,000 character limit.invalid_system_promptIl system prompt manca o supera i 32.000 caratteri
That image reference is not valid.invalid_image_urlIl riferimento all'immagine non è una stringa, oppure supera i 2.048 caratteri
This conversation has {count} messages, over the 100 message limit.too_many_messagesLa rotta della chat dell'app ha rifiutato una trascrizione con più di 100 messaggi in un'unica richiesta

Il limite di 100.000 caratteri conta l'intero messaggio, incluso qualsiasi testo estratto da un allegato. Per sapere cosa fa Whizi quando il testo estratto da un allegato non entra nel budget del messaggio, vedi caricamento file non riuscito.

Limiti di frequenza, e un rifiuto che non riguarda la velocità

Entrambe le stringhe di limite di frequenza 429 sono nella tabella sopra, e entrambe portano il codice rate_limit_reached. Una richiesta rifiutata viene annullata, quindi un 429 non consuma mai un messaggio dalla tua soglia: aspetta che la finestra passi e reinvia. I valori delle finestre e le soglie dei piani che ci stanno dietro sono su limiti di frequenza e crediti esauriti.

Un rifiuto della stessa famiglia non riguarda affatto la velocità: Account sharing limit reached. Please use your own Whizi account., HTTP 403, codice account_sharing_limit, scatta quando sono state viste più di 3 chiavi distinte di dispositivo o sessione sullo stesso account nelle ultime 24 ore. Aspettare un minuto non lo risolve.

La risposta parte, poi si ferma o non viene mai visualizzata

Una volta aperta la connessione, un errore proviene dal provider del modello oppure dal meccanismo che trasporta lo streaming. Le stringhe variano a seconda di dove si è verificato l'errore.

MessaggioDa dove viene
The model is temporarily rate-limited. Please retry shortly.HTTP 429 provider_rate_limited, quando il provider risponde alla connessione con un 429
The model provider rejected the request.Usato quando il corpo dell'errore del provider non può essere analizzato, o si riduce a un messaggio vuoto
The model provider returned an empty stream.HTTP 502, il servizio a monte ha risposto OK ma senza corpo
The model provider returned an error.Evento di errore in streaming quando il provider invia un frame di errore senza un proprio messaggio
The model stream was interrupted.Evento di errore in streaming per qualsiasi altro fallimento a metà flusso
Generation failed mid-stream.La generazione è terminata con un errore dopo che erano già stati inviati dei byte
Generation failed to start.Il testo di riserva interno per un fallimento di avvio del coordinatore che non porta un proprio messaggio
The generation stream is unavailable.Sollevato quando il coordinatore non riesce a restituire uno stream a cui riagganciarsi
Generation aborted before it started.Sollevato come AbortError quando il client si disconnette prima che la connessione a monte si completi
Something went wrong. Please retry.HTTP 500 internal_error, il corpo per qualsiasi errore non gestito sul backend
Sorry, there was an error generating the response.Scritto nella bolla dell'assistente quando uno stream termina senza messaggio finale e senza contenuto accumulato

Qualsiasi errore a monte diverso da un 429 è HTTP 502 provider_error con il messaggio del provider, troncato a 300 caratteri. Sul percorso a metà flusso non esiste un evento di errore in banda: la connessione semplicemente si interrompe.

Una di queste stringhe è più un registro che un messaggio. Generation aborted before it started. viene sollevato come AbortError quando il client si disconnette prima che la connessione a monte si completi, e la rotta risponde a quel caso con HTTP 408 e un corpo vuoto, quindi la stringa è ciò che il server annota, non ciò che il browser stampa. In una traccia di rete, un 408 vuoto sulla rotta di generazione significa che la richiesta è sparita prima che qualsiasi modello venisse raggiunto.

Il caso residuale sta sotto tutto questo: qualsiasi cosa il backend non riconosca finisce come HTTP 500 internal_error con il corpo Something went wrong. Please retry. HTTP 500 non identifica una causa. Reinvia una volta, poi contatta il supporto se si ripete.

Cosa fare: reinvia, e se si ripete, passa a un modello diverso nella stessa conversazione. Questi errori hanno origine a monte di Whizi, non nel tuo account o nelle tue impostazioni.

Una cosa che non devi fare è tenere aperta la scheda. La generazione viene eseguita in un Durable Object per conversazione, quindi chiudere la scheda a metà flusso non uccide la risposta e la risposta viene comunque salvata. Una scheda riaperta o un secondo dispositivo possono riagganciarsi a una generazione già in corso. The generation stream is unavailable. viene sollevato quando il coordinatore non riesce a restituire uno stream a cui riagganciarsi. Ricarica la conversazione e leggi ciò che è stato salvato invece di aspettare lo stream.

Nella vista di confronto affiancato le stringhe per lato sono di nuovo diverse: The model did not respond. Please try again. quando una risposta di generazione non è OK e non porta un errore leggibile, Could not start a comparison chat. quando la chat sottostante non può essere creata, e Something went wrong. come ultima risorsa. Quest'ultima è la forma breve, senza la frase di retry dopo, ed è così che si distingue dal corpo Something went wrong. Please retry. di un 500.

La tua sessione è scaduta

Gli errori di autenticazione somigliano a errori di invio perché emergono al momento dell'invio. Authentication required. è HTTP 401 unauthorized e scatta quando la richiesta non porta alcun token bearer. Invalid or expired session token. è lo stesso stato e codice quando la verifica del token fallisce per qualsiasi motivo: token scaduto, firma errata, emittente sbagliato.

Sul lato sito potresti invece vedere Failed to retrieve session token., che il sito solleva ogni volta che il recupero del token restituisce nulla prima di una chiamata di elenco chat, caricamento chat, eliminazione, rinomina o caricamento file. La vista di confronto ha una sua formulazione: Your session expired. Please refresh and try again.

La soluzione è un aggiornamento della pagina, poi un nuovo accesso se l'aggiornamento non ripristina la sessione. Nulla sull'account viene perso, e nessun messaggio è stato inviato.

Non è un errore, è un limite

Un rifiuto per soglia e un rifiuto per livello di piano non sono errori di invio. La richiesta è stata formata correttamente e Whizi l'ha rifiutata di proposito, quindi non c'è nulla da correggere nel compositore: i rifiuti per soglia sono trattati in crediti esauriti, e un modello che appare bloccato è trattato in risoluzione dei problemi.

Un prompt rifiutato dal filtro dei contenuti non è nemmeno un errore di invio. Il filtro viene eseguito prima che qualsiasi soglia sia riservata e prima che il provider venga chiamato, quindi un prompt rifiutato non costa alcuna soglia, e il rifiuto arriva come HTTP 400 con il motivo mostrato nella chat.

Modificare un messaggio inviato fallisce invece

Modificare un prompt e reinviarlo è il modo per rieseguire un turno, dato che Whizi non ha alcun controllo di rigenerazione. Questo percorso ha due errori propri.

That message is no longer part of this conversation. Reload and try again. è HTTP 404 replace_anchor_not_found, restituito quando la modifica indica un id di messaggio che non è più nella conversazione. Ricarica la conversazione. Il client sta trattenendo un id di messaggio che il server non ha più.

Conversation not found. è HTTP 404 not_found, restituito quando l'id della conversazione non esiste o non appartiene al chiamante. Compare sulla rotta di generazione e anche sulle rotte di lettura, eliminazione, rinomina, aggiunta messaggio, cambio versione e condivisione.

Lista di controllo
  • Invio che non fa nulla significa che una risposta è ancora in generazione, non un tasto perso
  • Una sola generazione viene eseguita per account alla volta, su tutti i tuoi dispositivi
  • Un invio duplicato viene ignorato di proposito, con un 409 e un messaggio che lo dice
  • La chat ha un tetto al minuto e uno all'ora che nessun piano rimuove
  • Una richiesta bloccata da un limite di frequenza non costa nulla dalla tua soglia
  • Un singolo messaggio è limitato a 100.000 caratteri
  • Gli errori del provider si risolvono reinviando o cambiando modello, non con le impostazioni
  • Chiudere la scheda a metà risposta non uccide la risposta
  • Gli errori di autenticazione si risolvono aggiornando e accedendo di nuovo

Domande frequenti

Cosa significa "Generation already in progress. Please stop it or wait for it to finish."?

Ferma la risposta in corso, oppure aspetta che finisca, poi invia di nuovo. Il rifiuto è HTTP 409 con codice generation_in_progress, e compare anche quando un dispositivo diverso sta generando sullo stesso account. L'interruzione è gestita dal server: la risposta parziale viene salvata, il blocco viene rilasciato e un turno non consegnato viene rimborsato.

La mia risposta si è fermata a metà. Mi è stato addebitato qualcosa?

Un errore a metà flusso interrompe la connessione senza alcun evento di errore in banda, e qualunque testo sia arrivato prima dell'interruzione viene conservato. Se interrompi tu stesso una generazione, il server annulla la lettura dal provider, salva la risposta parziale e rimborsa un turno non consegnato. Per un errore ripetuto del provider, passa a un modello diverso nella stessa conversazione, dato che l'errore ha origine a monte di Whizi. Se ciò che ricevi è HTTP 500 con "Something went wrong. Please retry.", quello è il corpo generico per un errore non gestito sul backend piuttosto che un problema del modello, quindi reinvia una volta e segnalalo se continua a succedere.

Chiudere la scheda annulla la mia risposta?

No, con una sola finestra ristretta proprio all'inizio. Se il client si disconnette prima che la connessione a monte si completi, il server registra "Generation aborted before it started." e risponde con HTTP 408 e un corpo vuoto, ed è per questo che quella richiesta sembra non aver restituito nulla. Oltre quel punto la risposta sopravvive al client, perché la generazione viene eseguita in un Durable Object per conversazione e la risposta viene comunque salvata. "The generation stream is unavailable." viene sollevato quando il coordinatore non riesce a restituire uno stream a cui riagganciarsi, e ricaricando la conversazione si vede ciò che è stato salvato.

Whizi dice che il mio messaggio supera il limite di 100.000 caratteri. Cosa faccio?

Un singolo messaggio è limitato a 100.000 caratteri e il rifiuto è HTTP 400, codice message_too_long. Il conteggio copre l'intero messaggio, incluso il testo estratto da un allegato. Chiedi di una sezione alla volta, oppure allega un file più corto. Quando il testo estratto da un allegato non entra nel budget del messaggio, Whizi lo tronca invece di rifiutarlo e ti avvisa che è stata inviata solo la prima parte.