Uma mensagem do Whizi não envia, ou a resposta nunca chega

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 mensagem falhou na validação, ou o token da sua sessão expirou. O Whizi nomeia o motivo no texto do erro, e uma solicitação bloqueada por limite de taxa não custa nada.

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ódigoPor quêO que fazer
Generation already in progress. Please stop it or wait for it to finish.409Outra resposta está sendo gerada na sua contaPare, ou espere
Duplicate message ignored. Please wait for the current response to finish.409O mesmo texto (e imagem) já foi enviado recentemente para esta conversaEspere a resposta que já está em andamento
Too many requests. Please wait and try again.429Uma janela por minuto recusou a solicitaçãoEspere e reenvie
Hourly message limit reached. Please try again later.429O teto de mensagens por hora recusou o envioEspere e reenvie
A non-empty message is required.400A mensagem está vazia ou só tem espaçosDigite 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.400Uma mensagem ultrapassou 100.000 caracteresDivida o texto, ou pergunte sobre uma seção por vez
The model is temporarily rate-limited. Please retry shortly.429O provedor do modelo respondeu a conexão com um 429Tente novamente, ou troque de modelo
Failed to send message.nenhum, um toast do siteO envio falhou e o backend não retornou nenhuma mensagemVerifique sua conexão e reenvie
Something went wrong. Please retry.500Qualquer erro não tratado no backendReenvie, e avise o suporte se repetir
Invalid or expired session token.401A verificação do token falhouAtualize 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.

MensagemCódigoGatilho
A non-empty message is required.empty_messagecontent está ausente ou só tem espaços
A model is required.invalid_modelmodel está ausente ou em branco
That model is not available for text chat.unsupported_modelO 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_longUma única mensagem ultrapassou 100.000 caracteres
That system prompt is missing or over the 32,000 character limit.invalid_system_promptO system prompt está ausente ou ultrapassa 32.000 caracteres
That image reference is not valid.invalid_image_urlA 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_messagesA 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.

MensagemDe 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.

Lista de verificação
  • 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.