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 ves | Código | Por qué | Qué hacer |
|---|---|---|---|
Generation already in progress. Please stop it or wait for it to finish. | 409 | Hay otra respuesta ejecutándose en tu cuenta | Detenla, o espera |
Duplicate message ignored. Please wait for the current response to finish. | 409 | El mismo texto (y la imagen) ya se envió a este chat hace poco | Espera a que termine la respuesta que ya está en curso |
Too many requests. Please wait and try again. | 429 | Una ventana por minuto rechazó la solicitud | Espera y vuelve a enviar |
Hourly message limit reached. Please try again later. | 429 | El límite horario del chat la rechazó | Espera y vuelve a enviar |
A non-empty message is required. | 400 | El mensaje falta o solo contiene espacios en blanco | Escribe algo |
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 mensaje superó los 100,000 caracteres | Divídelo, o pregunta sobre una sección a la vez |
The model is temporarily rate-limited. Please retry shortly. | 429 | El proveedor del modelo respondió a la conexión con un 429 | Reinténtalo, o cambia de modelo |
Failed to send message. | ninguno, un aviso emergente del sitio web | El envío falló y el backend no proporcionó ningún mensaje | Revisa tu conexión y vuelve a enviar |
Something went wrong. Please retry. | 500 | Cualquier error no controlado en el backend | Vuelve a enviarlo y repórtalo si se repite |
Invalid or expired session token. | 401 | Falló la verificación del token | Actualiza 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.
| Mensaje | Código | Motivo |
|---|---|---|
A non-empty message is required. | empty_message | content está ausente o solo contiene espacios en blanco |
A model is required. | invalid_model | model está ausente o vacío |
That model is not available for text chat. | unsupported_model | El 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_long | Un solo mensaje superó los 100,000 caracteres |
That system prompt is missing or over the 32,000 character limit. | invalid_system_prompt | El system prompt está ausente o supera los 32,000 caracteres |
That image reference is not valid. | invalid_image_url | La 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_messages | La 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.
| Mensaje | De 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.
- 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.