A resposta rápida
Uma mensagem do Whizi que não envia é uma destas cinco coisas: outra resposta ainda está sendo gerada, você enviou o mesmo texto duas vezes, você ultrapassou um limite por minuto ou por hora, a própria mensagem falhou na validação, ou o token da sua sessão expirou. O Whizi nomeia o motivo no texto do erro, então a string que você vê determina a correção.
| O que você vê | Código | Por quê | O que fazer |
|---|---|---|---|
Generation already in progress. Please stop it or wait for it to finish. | 409 | Outra resposta está sendo gerada na sua conta | Pare, ou espere |
Duplicate message ignored. Please wait for the current response to finish. | 409 | O mesmo texto (e imagem) já foi enviado recentemente para esta conversa | Espere a resposta que já está em andamento |
Too many requests. Please wait and try again. | 429 | Uma janela por minuto recusou a solicitação | Espere e reenvie |
Hourly message limit reached. Please try again later. | 429 | O teto de mensagens por hora recusou o envio | Espere e reenvie |
A non-empty message is required. | 400 | A mensagem está vazia ou só tem espaços | Digite alguma coisa |
This message is {count} characters, over the 100,000 character limit. Attach a shorter file, or ask about one section at a time. | 400 | Uma mensagem ultrapassou 100.000 caracteres | Divida o texto, ou pergunte sobre uma seção por vez |
The model is temporarily rate-limited. Please retry shortly. | 429 | O provedor do modelo respondeu a conexão com um 429 | Tente novamente, ou troque de modelo |
Failed to send message. | nenhum, um toast do site | O envio falhou e o backend não retornou nenhuma mensagem | Verifique sua conexão e reenvie |
Something went wrong. Please retry. | 500 | Qualquer erro não tratado no backend | Reenvie, e avise o suporte se repetir |
Invalid or expired session token. | 401 | A verificação do token falhou | Atualize a página e faça login novamente |
Recusas por limite de taxa são desfeitas, então uma solicitação recusada nunca consome uma mensagem da sua franquia.
Nada acontece quando você aperta Enter
Se o Enter não faz absolutamente nada, uma resposta ainda está sendo gerada. O compositor ignora o Enter de propósito enquanto uma resposta está em andamento, então não é uma tecla perdida. Shift e Enter continua inserindo uma quebra de linha.
O Whizi roda uma geração por conta de cada vez, aplicada por um bloqueio por usuário, então dois aparelhos nunca conseguem gerar ao mesmo tempo na mesma conta. Uma segunda tentativa é recusada com Generation already in progress. Please stop it or wait for it to finish., HTTP 409, código generation_in_progress. A mesma string é retornada quando o coordenador de geração reporta um conflito no momento da conexão.
Enviar o mesmo texto duas vezes retorna Duplicate message ignored. Please wait for the current response to finish., HTTP 409, código duplicate_message. Isso ocorre quando o mesmo texto de mensagem (e imagem) já foi enviado recentemente para essa conversa, o que é exatamente o que um clique duplo ou um segundo Enter impaciente produz.
A correção para os dois casos é a mesma: pare a resposta em andamento, ou deixe ela terminar. A parada é tratada no servidor. O coordenador cancela a leitura do provedor, salva o texto que já chegou, libera o bloqueio e reembolsa um turno não entregue. Se um bloqueio de alguma forma ficar preso, ele se recupera sozinho: um bloqueio se torna disponível para ser assumido assim que seu titular é considerado órfão ou travado, e bloqueios expirados são varridos periodicamente.
Se uma parada deixa uma lacuna, o balão do assistente mostra Generation stopped., que é o texto salvo quando uma geração é parada e nenhum texto parcial foi capturado. Generation stopped, but it could not be saved. significa que a parada funcionou, mas salvar a resposta parcial não.
A mensagem é recusada antes de chegar a qualquer modelo
Essas são recusas de validação HTTP 400 levantadas antes que qualquer coisa chegue a um modelo. Nada foi enviado para o provedor.
| Mensagem | Código | Gatilho |
|---|---|---|
A non-empty message is required. | empty_message | content está ausente ou só tem espaços |
A model is required. | invalid_model | model está ausente ou em branco |
That model is not available for text chat. | unsupported_model | O id do modelo não corresponde a um modelo de texto no catálogo |
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 | Uma única mensagem ultrapassou 100.000 caracteres |
That system prompt is missing or over the 32,000 character limit. | invalid_system_prompt | O system prompt está ausente ou ultrapassa 32.000 caracteres |
That image reference is not valid. | invalid_image_url | A referência de imagem não é uma string, ou tem mais de 2.048 caracteres |
This conversation has {count} messages, over the 100 message limit. | too_many_messages | A rota de chat do app recusou uma transcrição com mais de 100 mensagens em uma única solicitação |
O teto de 100.000 caracteres conta a mensagem inteira, incluindo qualquer texto extraído de um anexo. Para saber o que o Whizi faz quando o texto extraído de um anexo não cabe no orçamento da mensagem, veja falha no envio de arquivo.
Limites de taxa, e uma recusa que não tem a ver com velocidade
As duas strings de limite de taxa 429 estão na tabela acima, e ambas carregam o código rate_limit_reached. Uma solicitação recusada é desfeita, então um 429 nunca consome uma mensagem da sua franquia: espere a janela passar e reenvie. Os números das janelas e as franquias de cada plano por trás delas estão em limites de taxa e créditos esgotados.
Uma recusa da mesma família não tem nada a ver com velocidade: Account sharing limit reached. Please use your own Whizi account., HTTP 403, código account_sharing_limit, ocorre quando mais de 3 chaves distintas de aparelho ou sessão foram vistas em uma conta nas últimas 24 horas. Esperar um minuto não resolve.
A resposta começa, depois para ou nunca aparece
Depois que a conexão é aberta, uma falha vem do provedor do modelo ou da infraestrutura que carrega o stream. As strings mudam conforme onde a falha aconteceu.
| Mensagem | De onde vem |
|---|---|
The model is temporarily rate-limited. Please retry shortly. | HTTP 429 provider_rate_limited, quando o provedor responde a conexão com um 429 |
The model provider rejected the request. | Usado quando o corpo de erro do provedor não pode ser interpretado, ou é interpretado como uma mensagem vazia |
The model provider returned an empty stream. | HTTP 502, o provedor respondeu OK mas não enviou corpo nenhum |
The model provider returned an error. | Evento de erro dentro do stream quando o provedor envia um frame de erro sem mensagem própria |
The model stream was interrupted. | Evento de erro dentro do stream para qualquer outra falha no meio do stream |
Generation failed mid-stream. | A geração terminou em falha depois que bytes já tinham sido enviados |
Generation failed to start. | O texto interno de reserva em uma falha de início do coordenador que não carrega mensagem própria |
The generation stream is unavailable. | Levantado quando o coordenador não consegue devolver um stream para conectar |
Generation aborted before it started. | Levantado como um AbortError quando o cliente se desconecta antes que a conexão upstream se complete |
Something went wrong. Please retry. | HTTP 500 internal_error, o corpo para qualquer erro de backend não tratado |
Sorry, there was an error generating the response. | Escrito no balão do assistente quando um stream termina sem mensagem final e sem conteúdo acumulado |
Qualquer falha upstream que não seja um 429 é um HTTP 502 provider_error carregando a mensagem do provedor, truncada em 300 caracteres. No caminho do meio do stream não existe um evento de erro dentro do canal: a conexão simplesmente quebra.
Uma dessas strings é um registro, não uma mensagem. Generation aborted before it started. é levantada como um AbortError quando o cliente se desconecta antes que a conexão upstream se complete, e a rota responde esse caso com HTTP 408 e corpo vazio, então a string é o que o servidor anota, não o que o navegador exibe. Em um rastreamento de rede, um 408 vazio na rota de geração significa que a solicitação sumiu antes de qualquer modelo ser alcançado.
A rede de segurança fica por baixo de tudo isso: qualquer coisa que o backend não reconheça termina como HTTP 500 internal_error com o corpo Something went wrong. Please retry. O HTTP 500 não identifica uma causa. Reenvie uma vez, e entre em contato com o suporte se repetir.
O que fazer: reenvie, e se repetir, troque para um modelo diferente na mesma conversa. Esses erros se originam upstream do Whizi, não na sua conta ou nas suas configurações.
Uma coisa que você não precisa fazer é manter a aba aberta. A geração roda em um Durable Object por conversa, então fechar a aba no meio do stream não mata a resposta, e a resposta continua sendo salva. Uma aba reaberta ou um segundo aparelho podem se reconectar a uma geração já em andamento. The generation stream is unavailable. é levantada quando o coordenador não consegue devolver um stream para conectar. Recarregue a conversa e leia o que foi salvo, em vez de esperar pelo stream.
Na visualização de comparação lado a lado, as strings de cada lado são diferentes de novo: The model did not respond. Please try again. quando uma resposta de geração não é OK e não carrega um erro legível, Could not start a comparison chat. quando o chat de apoio não pode ser criado, e Something went wrong. como último recurso. Essa última é a forma curta, sem a frase de repetição depois dela, o que é como você a diferencia do corpo Something went wrong. Please retry. de um 500.
Sua sessão expirou
Falhas de autenticação parecem falhas de envio porque aparecem no momento do envio. Authentication required. é um HTTP 401 unauthorized e ocorre quando a solicitação não carrega um bearer token. Invalid or expired session token. é o mesmo status e código quando a verificação do token falha por qualquer motivo: token expirado, assinatura inválida, emissor errado.
No site você pode em vez disso ver Failed to retrieve session token., que o site dispara sempre que a busca do token não retorna nada antes de uma chamada de lista de chats, carregamento de chat, exclusão, renomeação ou envio. A visualização de comparação tem seu próprio texto: Your session expired. Please refresh and try again.
A correção é atualizar a página, e fazer login de novo se a atualização não restaurar a sessão. Nada na conta é perdido, e nenhuma mensagem foi enviada.
Não é uma falha, é um limite
Uma recusa por franquia e uma recusa por nível de plano não são falhas de envio. A solicitação foi formada corretamente e o Whizi a recusou de propósito, então não há nada para corrigir no compositor: recusas por franquia estão cobertas em créditos esgotados, e um modelo que aparece bloqueado está coberto em solução de problemas.
Um prompt recusado pela triagem de conteúdo também não é uma falha de envio. A triagem roda antes de qualquer cota ser reservada e antes de o provedor ser chamado, então um prompt recusado não custa franquia nenhuma, e a recusa chega como HTTP 400 com o motivo mostrado no chat.
Editar uma mensagem enviada falha em vez disso
Editar um prompt e reenviar é como você reexecuta um turno, já que o Whizi não tem um controle de regenerar. Esse caminho tem suas próprias duas falhas.
That message is no longer part of this conversation. Reload and try again. é um HTTP 404 replace_anchor_not_found, retornado quando a edição indica um id de mensagem que não está mais na conversa. Recarregue a conversa. O cliente está segurando um id de mensagem que o servidor não tem mais.
Conversation not found. é um HTTP 404 not_found, retornado quando o id da conversa não existe ou não pertence a quem fez a chamada. Aparece na rota de geração e também nas rotas de leitura, exclusão, renomeação, adição de mensagem, troca de versão e compartilhamento.
- Enter não fazer nada significa que uma resposta ainda está sendo gerada, não uma tecla perdida
- Uma geração roda por conta de cada vez, em todos os seus aparelhos
- Um envio duplicado é ignorado de propósito, com um 409 e uma mensagem avisando disso
- O chat tem um teto por minuto e por hora que nenhum plano remove
- Uma solicitação bloqueada por limite de taxa não custa nada da sua franquia
- Uma mensagem tem um teto de 100.000 caracteres
- Erros do provedor se resolvem reenviando ou trocando de modelo, não pelas configurações
- Fechar a aba no meio da resposta não mata a resposta
- Erros de autenticação se resolvem atualizando a página e fazendo login de novo
Perguntas frequentes
O que significa "Generation already in progress. Please stop it or wait for it to finish."?
Pare a resposta em andamento, ou espere ela terminar, depois envie de novo. A recusa é um HTTP 409 com o código generation_in_progress, e também aparece quando um aparelho diferente está gerando na mesma conta. A parada é tratada no servidor: a resposta parcial é salva, o bloqueio é liberado e um turno não entregue é reembolsado.
Minha resposta parou no meio. Fui cobrado?
Uma falha no meio do stream quebra a conexão sem um evento de erro dentro do canal, e qualquer texto que chegou antes da quebra é mantido. Se você mesmo parar uma geração, o servidor cancela a leitura do provedor, salva a resposta parcial e reembolsa um turno não entregue. Para uma falha repetida do provedor, troque para um modelo diferente na mesma conversa, já que o erro se origina upstream do Whizi. Se o que você recebe de volta é um HTTP 500 com "Something went wrong. Please retry.", esse é o corpo genérico para um erro de backend não tratado, não um problema do modelo, então reenvie uma vez e avise se continuar acontecendo.
Fechar a aba cancela minha resposta?
Não, com uma janela estreita bem no início. Se o cliente se desconecta antes que a conexão upstream se complete, o servidor registra "Generation aborted before it started." e responde HTTP 408 com corpo vazio, por isso essa solicitação parece não ter retornado nada. Depois desse ponto, a resposta sobrevive ao cliente, porque a geração roda em um Durable Object por conversa e a resposta continua sendo salva. "The generation stream is unavailable." é levantada quando o coordenador não consegue devolver um stream para conectar, e recarregar a conversa mostra o que foi salvo.
O Whizi diz que minha mensagem ultrapassou o limite de 100.000 caracteres. E agora?
Uma única mensagem tem um teto de 100.000 caracteres e a recusa é HTTP 400, código message_too_long. A contagem cobre a mensagem inteira, incluindo texto extraído de um anexo. Pergunte sobre uma seção por vez, ou anexe um arquivo mais curto. Quando o texto extraído de um anexo não cabe no orçamento da mensagem, o Whizi trunca em vez de recusar e avisa que só a primeira parte foi enviada.