Un mensaje de Whizi no se envía, o la respuesta nunca llega

Respuesta rápida

Un mensaje de Whizi que no se envía se debe a una de cinco causas: todavía se está generando otra respuesta, enviaste el mismo texto dos veces, superaste un límite de frecuencia por minuto o por hora, el mensaje no pasó la validación, o tu token de sesión expiró. Whizi indica el motivo en el texto del error, y una solicitud bloqueada por límite de frecuencia no cuesta nada.

La respuesta breve

Un mensaje de Whizi que no se envía se debe a una de cinco causas: todavía se está generando otra respuesta, enviaste el mismo texto dos veces, superaste un límite de frecuencia por minuto o por hora, el propio mensaje no pasó la validación, o tu token de sesión expiró. Whizi indica el motivo en el texto del error, así que el texto que ves determina la solución.

Lo que vesCódigoPor quéQué hacer
Generation already in progress. Please stop it or wait for it to finish.409Hay otra respuesta ejecutándose en tu cuentaDetenla, o espera
Duplicate message ignored. Please wait for the current response to finish.409El mismo texto (y la imagen) ya se envió a este chat hace pocoEspera a que termine la respuesta que ya está en curso
Too many requests. Please wait and try again.429Una ventana por minuto rechazó la solicitudEspera y vuelve a enviar
Hourly message limit reached. Please try again later.429El límite horario del chat la rechazóEspera y vuelve a enviar
A non-empty message is required.400El mensaje falta o solo contiene espacios en blancoEscribe algo
This message is {count} characters, over the 100,000 character limit. Attach a shorter file, or ask about one section at a time.400Un mensaje superó los 100,000 caracteresDivídelo, o pregunta sobre una sección a la vez
The model is temporarily rate-limited. Please retry shortly.429El proveedor del modelo respondió a la conexión con un 429Reinténtalo, o cambia de modelo
Failed to send message.ninguno, un aviso emergente del sitio webEl envío falló y el backend no proporcionó ningún mensajeRevisa tu conexión y vuelve a enviar
Something went wrong. Please retry.500Cualquier error no controlado en el backendVuelve a enviarlo y repórtalo si se repite
Invalid or expired session token.401Falló la verificación del tokenActualiza la página e inicia sesión de nuevo

Los rechazos por límite de frecuencia se revierten, así que una solicitud rechazada nunca consume un mensaje de tu cupo.

No pasa nada al pulsar Enter

Si Enter no hace absolutamente nada, es que todavía se está generando una respuesta. El compositor ignora Enter a propósito mientras hay una respuesta en curso, así que no es una pulsación perdida. Shift y Enter sigue insertando un salto de línea.

Whizi ejecuta una generación por cuenta a la vez, algo que impone un bloqueo por usuario, de modo que dos dispositivos nunca pueden generar al mismo tiempo para la misma cuenta. Un segundo intento se rechaza con Generation already in progress. Please stop it or wait for it to finish., HTTP 409, código generation_in_progress. Se devuelve el mismo texto cuando el coordinador de generación informa de un conflicto en el momento de la conexión.

Enviar el mismo texto dos veces devuelve Duplicate message ignored. Please wait for the current response to finish., HTTP 409, código duplicate_message. Esto ocurre cuando el mismo texto de mensaje (y la imagen) ya se envió a esta conversación hace poco, que es lo que produce un doble clic o un segundo Enter impaciente.

La solución para ambos casos es la misma: detén la respuesta en curso, o deja que termine. La detención se gestiona en el servidor. El coordinador cancela la lectura del proveedor, guarda el texto que haya llegado, libera el bloqueo y reembolsa un turno no entregado. Si un bloqueo queda atascado por algún motivo, se recupera solo: un bloqueo se vuelve reutilizable en cuanto se considera que su titular quedó huérfano o estancado, y los bloqueos vencidos se limpian según un calendario.

Si una detención deja un hueco, la burbuja del asistente muestra Generation stopped., que es el texto que se guarda cuando una generación se detiene y no se capturó texto parcial. Generation stopped, but it could not be saved. significa que la detención funcionó, pero guardar la respuesta parcial no.

El mensaje se rechaza antes de que lo vea ningún modelo

Estos son rechazos de validación HTTP 400 que se generan antes de que nada llegue a un modelo. No se envió nada río arriba.

MensajeCódigoMotivo
A non-empty message is required.empty_messagecontent está ausente o solo contiene espacios en blanco
A model is required.invalid_modelmodel está ausente o vacío
That model is not available for text chat.unsupported_modelEl id del modelo no corresponde a ningún modelo de texto del 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_longUn solo mensaje superó los 100,000 caracteres
That system prompt is missing or over the 32,000 character limit.invalid_system_promptEl system prompt está ausente o supera los 32,000 caracteres
That image reference is not valid.invalid_image_urlLa referencia de la imagen no es una cadena de texto, o supera los 2,048 caracteres
This conversation has {count} messages, over the 100 message limit.too_many_messagesLa ruta de chat de la app rechazó una transcripción con más de 100 mensajes en una sola solicitud

El límite de 100,000 caracteres cuenta el mensaje completo, incluido cualquier texto extraído de un archivo adjunto. Para saber qué hace Whizi cuando el texto extraído de un adjunto no cabe en el presupuesto del mensaje, consulta no se pudo subir el archivo.

Límites de frecuencia, y un rechazo que no tiene que ver con la velocidad

Los dos textos de límite de frecuencia 429 están en la tabla anterior, y ambos llevan el código rate_limit_reached. Una solicitud rechazada se revierte, así que un 429 nunca consume un mensaje de tu cupo: espera a que pase la ventana y vuelve a enviar. Las cifras de las ventanas y los cupos de cada plan detrás de ellas están en límites de frecuencia y sin créditos.

Un rechazo de la misma familia no tiene nada que ver con la velocidad: Account sharing limit reached. Please use your own Whizi account., HTTP 403, código account_sharing_limit, se produce cuando se han visto más de 3 claves distintas de dispositivo o sesión en una cuenta en las últimas 24 horas. Esperar un minuto no lo soluciona.

La respuesta empieza, y luego se detiene o nunca se muestra

Una vez abierta la conexión, un fallo proviene del proveedor del modelo o de la maquinaria que transporta el flujo. Los textos difieren según dónde se produjo el fallo.

MensajeDe dónde viene
The model is temporarily rate-limited. Please retry shortly.HTTP 429 provider_rate_limited, cuando el proveedor responde a la conexión con un 429
The model provider rejected the request.Se usa cuando el cuerpo del error del proveedor no se puede analizar, o se analiza como un mensaje vacío
The model provider returned an empty stream.HTTP 502, el origen respondió OK pero sin cuerpo
The model provider returned an error.Evento de error dentro del flujo cuando el proveedor envía un fotograma de error sin mensaje propio
The model stream was interrupted.Evento de error dentro del flujo para cualquier otro fallo a mitad del flujo
Generation failed mid-stream.La generación terminó en fallo después de que ya se habían enviado bytes
Generation failed to start.El texto de reserva interno para un fallo de arranque del coordinador que no lleva mensaje propio
The generation stream is unavailable.Se genera cuando el coordinador no puede devolver un flujo al que engancharse
Generation aborted before it started.Se genera como un AbortError cuando el cliente se desconecta antes de que se complete la conexión con el origen
Something went wrong. Please retry.HTTP 500 internal_error, el cuerpo para cualquier error no controlado del backend
Sorry, there was an error generating the response.Se escribe en la burbuja del asistente cuando un flujo termina sin mensaje final ni contenido acumulado

Cualquier fallo del origen que no sea un 429 es un HTTP 502 provider_error que lleva el mensaje del proveedor, truncado a 300 caracteres. En la ruta de mitad de flujo no hay ningún evento de error dentro del canal: la conexión simplemente se corta.

Uno de esos textos es más un registro que un mensaje. Generation aborted before it started. se genera como un AbortError cuando el cliente se desconecta antes de que se complete la conexión con el origen, y la ruta responde a ese caso con HTTP 408 y un cuerpo vacío, así que el texto es lo que anota el servidor, no lo que imprime el navegador. En una traza de red, un 408 vacío en la ruta de generación significa que la solicitud desapareció antes de llegar a ningún modelo.

Debajo de todo esto está el comodín: cualquier cosa que el backend no reconozca acaba como HTTP 500 internal_error con el cuerpo Something went wrong. Please retry. HTTP 500 no identifica una causa. Vuelve a enviarlo una vez y contacta con soporte si se repite.

Qué hacer: vuelve a enviarlo, y si se repite, cambia a otro modelo en la misma conversación. Estos errores se originan río arriba de Whizi, no en tu cuenta ni en tus ajustes.

Algo que no tienes que hacer es mantener la pestaña abierta. La generación se ejecuta en un Durable Object por conversación, así que cerrar la pestaña a mitad de flujo no mata la respuesta y esta se sigue guardando. Una pestaña reabierta o un segundo dispositivo pueden volver a engancharse a una generación ya en curso. The generation stream is unavailable. se genera cuando el coordinador no puede devolver un flujo al que engancharse. Recarga la conversación y lee lo que se haya guardado en lugar de esperar el flujo.

En la vista de comparación lado a lado los textos de cada lado vuelven a ser distintos: The model did not respond. Please try again. cuando una respuesta de generación no es OK y no lleva ningún error legible, Could not start a comparison chat. cuando no se puede crear el chat subyacente, y Something went wrong. como último recurso. Ese último es la forma corta, sin la frase de reintento después, que es como se distingue del cuerpo Something went wrong. Please retry. de un 500.

Tu sesión expiró

Los fallos de autenticación parecen fallos de envío porque aparecen en el momento de enviar. Authentication required. es HTTP 401 unauthorized y se produce cuando la solicitud no lleva ningún token bearer. Invalid or expired session token. es el mismo estado y código cuando la verificación del token falla por cualquier motivo: token expirado, firma incorrecta, emisor incorrecto.

En el sitio web puede que veas en su lugar Failed to retrieve session token., que el sitio lanza cuando la obtención del token no devuelve nada antes de una llamada de lista de chats, carga de chat, eliminación, cambio de nombre o subida. La vista de comparación tiene su propio texto: Your session expired. Please refresh and try again.

La solución es actualizar la página, y volver a iniciar sesión si la actualización no restaura la sesión. No se pierde nada de la cuenta, y no se envió ningún mensaje.

No es un fallo, es un límite

Un rechazo por cupo y un rechazo por nivel de plan no son fallos de envío. La solicitud se formó correctamente y Whizi la rechazó a propósito, así que no hay nada que arreglar en el compositor: los rechazos por cupo se explican en sin créditos, y un modelo que aparece bloqueado se explica en solución de problemas.

Un prompt rechazado por el filtro de contenido tampoco es un fallo de envío. El filtrado se ejecuta antes de reservar cualquier cupo y antes de llamar al proveedor, así que un prompt rechazado no cuesta cupo, y el rechazo llega como HTTP 400 con el motivo mostrado en el chat.

Editar un mensaje enviado falla en su lugar

Editar un prompt y volver a enviarlo es la forma de repetir un turno, ya que Whizi no tiene un control para regenerar. Esa vía tiene sus dos propios fallos.

That message is no longer part of this conversation. Reload and try again. es HTTP 404 replace_anchor_not_found, se devuelve cuando la edición indica un id de mensaje que ya no está en la conversación. Recarga la conversación. El cliente tiene guardado un id de mensaje que el servidor ya no tiene.

Conversation not found. es HTTP 404 not_found, se devuelve cuando el id de conversación no existe o no pertenece a quien hace la llamada. Aparece en la ruta de generación y también en las rutas de lectura, eliminación, cambio de nombre, añadir mensaje, cambio de versión y compartir.

Lista de comprobación
  • Que Enter no haga nada significa que todavía se está generando una respuesta, no una pulsación perdida
  • Se ejecuta una generación por cuenta a la vez, en todos tus dispositivos
  • Un envío duplicado se ignora a propósito, con un 409 y un mensaje que lo indica
  • El chat tiene un límite por minuto y por hora que ningún plan elimina
  • Una solicitud bloqueada por límite de frecuencia no te cuesta nada de tu cupo
  • Un mensaje tiene un límite de 100,000 caracteres
  • Los errores del proveedor se solucionan reenviando o cambiando de modelo, no con ajustes
  • Cerrar la pestaña a mitad de respuesta no mata la respuesta
  • Los errores de autenticación se solucionan actualizando la página y volviendo a iniciar sesión

Preguntas frecuentes

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

Detén la respuesta en curso, o espera a que termine, y vuelve a enviar. El rechazo es HTTP 409 con código generation_in_progress, y también aparece cuando otro dispositivo está generando en la misma cuenta. La detención se gestiona en el servidor: la respuesta parcial se guarda, el bloqueo se libera y se reembolsa un turno no entregado.

Mi respuesta se detuvo a mitad de camino. ¿Se me cobró?

Un fallo a mitad de flujo corta la conexión sin ningún evento de error dentro del canal, y se conserva el texto que haya llegado antes del corte. Si detienes tú mismo una generación, el servidor cancela la lectura del proveedor, guarda la respuesta parcial y reembolsa un turno no entregado. Ante un fallo repetido del proveedor, cambia a otro modelo en la misma conversación, ya que el error se origina río arriba de Whizi. Si lo que recibes es HTTP 500 con "Something went wrong. Please retry.", ese es el cuerpo genérico para un error no controlado del backend y no un problema del modelo, así que reenvíalo una vez y repórtalo si se sigue repitiendo.

¿Cerrar la pestaña cancela mi respuesta?

No, salvo por una ventana muy estrecha justo al principio. Si el cliente se desconecta antes de que se complete la conexión con el origen, el servidor registra "Generation aborted before it started." y responde HTTP 408 con un cuerpo vacío, por lo que esa solicitud parece no haber devuelto absolutamente nada. Pasado ese punto, la respuesta sobrevive al cliente, porque la generación se ejecuta en un Durable Object por conversación y la respuesta se sigue guardando. "The generation stream is unavailable." se genera cuando el coordinador no puede devolver un flujo al que engancharse, y recargar la conversación muestra lo que se haya guardado.

Whizi dice que mi mensaje supera el límite de 100,000 caracteres. ¿Qué hago?

Un solo mensaje tiene un límite de 100,000 caracteres y el rechazo es HTTP 400, código message_too_long. El recuento cubre el mensaje completo, incluido el texto extraído de un archivo adjunto. Pregunta sobre una sección a la vez, o adjunta un archivo más corto. Cuando el texto extraído de un adjunto no cabe en el presupuesto del mensaje, Whizi lo trunca en lugar de rechazarlo y te avisa de que solo se envió la primera parte.