짧은 답변
Whizi 메시지가 전송되지 않는 이유는 다섯 가지 중 하나입니다: 다른 답변이 아직 생성 중이거나, 같은 텍스트를 두 번 보냈거나, 분당 또는 시간당 속도 제한을 넘었거나, 메시지 자체가 검증에 실패했거나, 세션 토큰이 만료된 경우입니다. Whizi는 오류 문구에 원인을 명시하므로, 눈에 보이는 문구가 곧 해결법을 알려줍니다.
| 보이는 내용 | 코드 | 이유 | 해야 할 일 |
|---|---|---|---|
Generation already in progress. Please stop it or wait for it to finish. | 409 | 계정에서 다른 답변이 실행 중 | 중지하거나 기다리세요 |
Duplicate message ignored. Please wait for the current response to finish. | 409 | 같은 텍스트(및 이미지)가 이 대화에 최근 이미 전송됨 | 이미 실행 중인 답변을 기다리세요 |
Too many requests. Please wait and try again. | 429 | 분당 창이 요청을 거부함 | 기다렸다가 다시 보내세요 |
Hourly message limit reached. Please try again later. | 429 | 시간당 채팅 상한이 거부함 | 기다렸다가 다시 보내세요 |
A non-empty message is required. | 400 | 메시지가 없거나 공백뿐임 | 무언가를 입력하세요 |
This message is {count} characters, over the 100,000 character limit. Attach a shorter file, or ask about one section at a time. | 400 | 메시지 하나가 100,000자를 초과함 | 나누거나, 한 번에 한 섹션씩 물어보세요 |
The model is temporarily rate-limited. Please retry shortly. | 429 | 모델 제공사가 연결 요청에 429로 응답함 | 재시도하거나 모델을 바꾸세요 |
Failed to send message. | 없음, 웹사이트 토스트 | 전송이 실패했고 백엔드가 메시지를 제공하지 않음 | 연결을 확인하고 다시 보내세요 |
Something went wrong. Please retry. | 500 | 백엔드에서 처리되지 않은 오류 | 다시 보내고, 반복되면 신고하세요 |
Invalid or expired session token. | 401 | 토큰 검증 실패 | 페이지를 새로고침하고 다시 로그인하세요 |
속도 제한으로 인한 거부는 되돌려지므로, 거부된 요청은 사용 한도에서 메시지를 소모하지 않습니다.
Enter를 눌러도 아무 일도 일어나지 않을 때
Enter를 눌러도 전혀 반응이 없다면, 답변이 아직 생성 중인 것입니다. 답변이 진행 중일 때 입력창은 의도적으로 Enter를 무시하므로, 키 입력이 씹힌 것이 아닙니다. Shift와 Enter는 여전히 줄바꿈을 삽입합니다.
Whizi는 계정당 한 번에 하나의 생성만 실행하며, 사용자별 잠금으로 강제됩니다. 그래서 같은 계정에서 두 기기가 동시에 생성할 수 없습니다. 두 번째 시도는 Generation already in progress. Please stop it or wait for it to finish.(HTTP 409, 코드 generation_in_progress)로 거부됩니다. 생성 코디네이터가 연결 시점에 충돌을 보고할 때도 같은 문구가 반환됩니다.
동일한 텍스트를 두 번 보내면 Duplicate message ignored. Please wait for the current response to finish.(HTTP 409, 코드 duplicate_message)가 반환됩니다. 이는 같은 메시지 텍스트(및 이미지)가 이 대화에 최근 이미 전송된 경우 발생하며, 더블클릭이나 성급한 두 번째 Enter가 이를 만들어냅니다.
두 경우 모두 해결법은 동일합니다: 실행 중인 답변을 중지하거나, 끝날 때까지 기다리세요. 중지는 서버에서 처리됩니다. 코디네이터는 제공사와의 읽기를 취소하고, 도착한 텍스트를 저장하고, 잠금을 해제하고, 전달되지 않은 턴을 환불합니다. 잠금이 어쩌다 남아 있어도 스스로 회복됩니다: 잠금 소유자가 고아 상태이거나 멈춘 것으로 판단되면 잠금을 다시 가져갈 수 있게 되고, 만료된 잠금은 일정에 따라 정리됩니다.
중지 후 빈 자리가 남으면 어시스턴트 말풍선에 Generation stopped.가 표시되는데, 이는 생성이 중지되고 부분 텍스트가 확보되지 않았을 때 저장되는 문구입니다. Generation stopped, but it could not be saved.는 중지는 성공했지만 부분 답변 저장에 실패했다는 뜻입니다.
어떤 모델에도 도달하기 전에 거부되는 메시지
다음은 무엇이든 모델에 닿기 전에 발생하는 HTTP 400 검증 거부입니다. 아무것도 업스트림으로 전송되지 않았습니다.
| 메시지 | 코드 | 발생 조건 |
|---|---|---|
A non-empty message is required. | empty_message | content가 없거나 공백뿐 |
A model is required. | invalid_model | model이 없거나 비어 있음 |
That model is not available for text chat. | unsupported_model | 모델 id가 카탈로그의 텍스트 모델로 해석되지 않음 |
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 | 메시지 하나가 100,000자를 넘음 |
That system prompt is missing or over the 32,000 character limit. | invalid_system_prompt | 시스템 프롬프트가 없거나 32,000자를 넘음 |
That image reference is not valid. | invalid_image_url | 이미지 참조가 문자열이 아니거나 2,048자를 넘음 |
This conversation has {count} messages, over the 100 message limit. | too_many_messages | 앱 채팅 라우트가 한 요청에 100개를 넘는 메시지를 담은 대화를 거부함 |
100,000자 상한은 첨부 파일에서 추출된 텍스트를 포함해 메시지 전체를 계산합니다. 추출된 첨부 텍스트가 메시지 예산에 맞지 않을 때 Whizi가 어떻게 처리하는지는 파일 업로드 실패에서 다룹니다.
속도 제한, 그리고 속도와 무관한 거부 하나
429 속도 제한 문구 두 가지는 모두 위 표에 있으며, 둘 다 코드 rate_limit_reached를 갖습니다. 거부된 요청은 되돌려지므로 429는 사용 한도에서 메시지를 소모하지 않습니다: 시간이 지나기를 기다렸다가 다시 보내세요. 창의 구체적인 수치와 이를 뒷받침하는 요금제별 한도는 속도 제한과 크레딧 소진에서 확인할 수 있습니다.
같은 계열의 거부 하나는 속도와는 전혀 무관합니다: Account sharing limit reached. Please use your own Whizi account.(HTTP 403, 코드 account_sharing_limit)는 지난 24시간 동안 한 계정에서 3개를 초과하는 서로 다른 기기 또는 세션 키가 확인될 때 발생합니다. 1분을 기다려도 해제되지 않습니다.
답변이 시작된 뒤 멈추거나 아예 표시되지 않을 때
연결이 열리고 나면, 실패는 모델 제공사 쪽에서 오거나 스트림을 전달하는 내부 장치 쪽에서 옵니다. 문구는 실패가 발생한 위치에 따라 달라집니다.
| 메시지 | 발생 위치 |
|---|---|
The model is temporarily rate-limited. Please retry shortly. | HTTP 429 provider_rate_limited, 제공사가 연결 요청에 429로 응답할 때 |
The model provider rejected the request. | 제공사 오류 본문을 파싱할 수 없거나, 파싱해도 메시지가 비어 있을 때 사용됨 |
The model provider returned an empty stream. | HTTP 502, 업스트림이 OK로 응답했지만 본문을 보내지 않음 |
The model provider returned an error. | 제공사가 자체 메시지 없는 오류 프레임을 보낼 때의 스트림 내 오류 이벤트 |
The model stream was interrupted. | 그 외 스트림 도중 발생하는 모든 실패에 대한 스트림 내 오류 이벤트 |
Generation failed mid-stream. | 이미 바이트가 전송된 뒤 생성이 실패로 종료됨 |
Generation failed to start. | 자체 메시지가 없는 코디네이터 시작 실패에 대한 내부 대체 문구 |
The generation stream is unavailable. | 코디네이터가 연결할 스트림을 반환하지 못할 때 발생 |
Generation aborted before it started. | 업스트림 연결이 완료되기 전에 클라이언트가 연결을 끊을 때 AbortError로 발생 |
Something went wrong. Please retry. | HTTP 500 internal_error, 처리되지 않은 모든 백엔드 오류의 본문 |
Sorry, there was an error generating the response. | 스트림이 최종 메시지도 누적된 콘텐츠도 없이 끝났을 때 어시스턴트 말풍선에 기록됨 |
429가 아닌 업스트림 실패는 모두 HTTP 502 provider_error이며, 제공사 메시지를 300자로 잘라 담습니다. 스트림 도중 경로에는 대역 내 오류 이벤트가 없습니다: 연결이 그냥 끊어집니다.
이 문구들 중 하나는 메시지라기보다 기록에 가깝습니다. Generation aborted before it started.는 업스트림 연결이 완료되기 전에 클라이언트가 연결을 끊을 때 AbortError로 발생하며, 라우트는 이 경우 HTTP 408과 빈 본문으로 응답하므로, 이 문구는 서버가 기록해 둔 것일 뿐 브라우저가 표시하는 문구가 아닙니다. 네트워크 트레이스에서 generate 라우트의 빈 408은 어떤 모델에도 도달하기 전에 요청이 사라졌다는 뜻입니다.
이 모든 것 아래에는 포괄적인 처리가 깔려 있습니다: 백엔드가 인식하지 못하는 모든 것은 HTTP 500 internal_error로 끝나며 본문은 Something went wrong. Please retry.입니다. HTTP 500은 원인을 특정하지 않습니다. 한 번 다시 보내고, 반복되면 지원팀에 문의하세요.
해야 할 일: 다시 보내고, 반복되면 같은 대화에서 다른 모델로 전환하세요. 이런 오류는 Whizi 쪽이 아니라 계정이나 설정과 무관하게 업스트림에서 발생합니다.
하지 않아도 되는 한 가지는 탭을 열어 두는 것입니다. 생성은 대화별 Durable Object에서 실행되므로, 스트림 도중 탭을 닫아도 답변은 죽지 않고 계속 저장됩니다. 탭을 다시 열거나 다른 기기에서 이미 진행 중인 생성에 다시 연결할 수 있습니다. The generation stream is unavailable.은 코디네이터가 연결할 스트림을 반환하지 못할 때 발생합니다. 스트림을 기다리는 대신 대화를 다시 불러와 저장된 내용을 읽으세요.
나란히 비교 보기에서는 각 쪽의 문구가 또 다릅니다: generate 응답이 정상이 아니면서 읽을 수 있는 오류가 없을 때는 The model did not respond. Please try again., 기반 채팅을 생성할 수 없을 때는 Could not start a comparison chat., 최후의 수단으로는 Something went wrong.이 표시됩니다. 마지막 것은 짧은 형태로 뒤에 재시도 문장이 붙지 않으며, 이것이 500의 본문인 Something went wrong. Please retry.와 구별되는 지점입니다.
세션이 만료된 경우
인증 실패는 전송 시점에 나타나기 때문에 전송 실패처럼 보입니다. Authentication required.는 HTTP 401 unauthorized이며 요청에 베어러 토큰이 전혀 없을 때 발생합니다. Invalid or expired session token.은 토큰 검증이 어떤 이유로든 실패했을 때(만료된 토큰, 잘못된 서명, 잘못된 발급자) 같은 상태와 코드로 나타납니다.
웹사이트 쪽에서는 대신 Failed to retrieve session token.이 나타날 수 있는데, 이는 채팅 목록, 채팅 로드, 삭제, 이름 변경, 업로드 호출 전에 토큰 조회가 아무것도 반환하지 않을 때마다 사이트가 던지는 오류입니다. 비교 보기는 자체 문구를 가지고 있습니다: Your session expired. Please refresh and try again.
해결법은 페이지 새로고침이며, 새로고침으로 세션이 복구되지 않으면 다시 로그인하세요. 계정에서 사라지는 것은 없고, 메시지도 전송되지 않았습니다.
전송한 메시지를 편집하면 대신 실패하는 경우
Whizi에는 재생성 버튼이 없으므로, 프롬프트를 편집해 다시 보내는 것이 턴을 다시 실행하는 방법입니다. 이 경로에는 자체적인 두 가지 실패가 있습니다.
That message is no longer part of this conversation. Reload and try again.은 HTTP 404 replace_anchor_not_found이며, 편집이 더 이상 대화에 없는 메시지 id를 지정할 때 반환됩니다. 대화를 다시 불러오세요. 클라이언트가 서버에는 더 이상 없는 메시지 id를 붙들고 있는 것입니다.
Conversation not found.은 HTTP 404 not_found이며, 대화 id가 존재하지 않거나 호출자 소유가 아닐 때 반환됩니다. generate 라우트뿐 아니라 읽기, 삭제, 이름 변경, 메시지 추가, 버전 전환, 공유 라우트에서도 나타납니다.
- Enter를 눌러도 반응이 없는 것은 키 입력이 씹힌 게 아니라 답변이 아직 생성 중이라는 뜻입니다
- 생성은 계정당 한 번에 하나만 실행되며, 모든 기기에 걸쳐 적용됩니다
- 중복 전송은 의도적으로 무시되며, 409와 그 사실을 알리는 메시지가 함께 표시됩니다
- 채팅에는 어떤 요금제도 풀어주지 않는 분당, 시간당 상한이 있습니다
- 속도 제한으로 거부된 요청은 사용 한도를 전혀 소모하지 않습니다
- 메시지 하나는 100,000자로 제한됩니다
- 제공사 오류는 설정이 아니라 다시 보내거나 모델을 바꾸는 것으로 해결합니다
- 답변 도중 탭을 닫아도 답변은 죽지 않습니다
- 인증 오류는 새로고침 후 다시 로그인하면 해결됩니다
자주 묻는 질문
"Generation already in progress. Please stop it or wait for it to finish."는 무슨 뜻인가요?
실행 중인 답변을 중지하거나 끝날 때까지 기다린 뒤 다시 보내세요. 이 거부는 코드 generation_in_progress와 함께 HTTP 409로 나타나며, 같은 계정에서 다른 기기가 생성 중일 때도 표시됩니다. 중지는 서버에서 처리됩니다: 부분 답변이 저장되고, 잠금이 해제되고, 전달되지 않은 턴이 환불됩니다.
답변이 도중에 멈췄습니다. 사용 한도가 소모됐나요?
스트림 도중 실패는 대역 내 오류 이벤트 없이 연결이 끊기며, 끊기기 전에 도착한 텍스트는 그대로 보존됩니다. 직접 생성을 중지하면 서버가 제공사와의 읽기를 취소하고, 부분 답변을 저장하고, 전달되지 않은 턴을 환불합니다. 제공사 오류가 반복된다면 같은 대화에서 다른 모델로 전환하세요. 오류는 Whizi가 아니라 업스트림에서 발생하기 때문입니다. HTTP 500과 함께 "Something went wrong. Please retry."가 나타난다면, 이는 모델 문제가 아니라 처리되지 않은 백엔드 오류에 대한 일반 본문이므로 한 번 다시 보내고, 계속 반복되면 신고하세요.
탭을 닫으면 답변이 취소되나요?
아니요, 아주 초반의 짧은 구간 하나만 예외입니다. 업스트림 연결이 완료되기 전에 클라이언트가 연결을 끊으면, 서버는 "Generation aborted before it started."를 기록하고 빈 본문과 함께 HTTP 408로 응답하는데, 이 때문에 그 요청은 아무것도 반환하지 않은 것처럼 보입니다. 그 시점을 지나면 답변은 클라이언트와 무관하게 살아남습니다. 생성이 대화별 Durable Object에서 실행되고 답변이 계속 저장되기 때문입니다. "The generation stream is unavailable."은 코디네이터가 연결할 스트림을 반환하지 못할 때 발생하며, 대화를 다시 불러오면 저장된 내용이 표시됩니다.
Whizi가 메시지가 100,000자 제한을 넘었다고 합니다. 어떻게 해야 하나요?
메시지 하나는 100,000자로 제한되며 거부는 코드 message_too_long과 함께 HTTP 400으로 나타납니다. 이 글자 수는 첨부 파일에서 추출된 텍스트를 포함해 메시지 전체를 계산합니다. 한 번에 한 섹션씩 물어보거나, 더 짧은 파일을 첨부하세요. 추출된 첨부 텍스트가 메시지 예산에 맞지 않을 때 Whizi는 거부 대신 잘라내고, 첫 부분만 전송되었다고 경고합니다.