簡潔な答え
Whiziのメッセージが送信できないのは、次の5つのいずれかが原因です。別の返信がまだ生成中である、同じ文章を二重に送った、1分または1時間あたりのレート制限を超えた、メッセージ自体が検証に失敗した、あるいはセッショントークンが期限切れになった、のいずれかです。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 | 1分単位の制限がリクエストを拒否した | 待ってから再送 |
Hourly message limit reached. Please try again later. | 429 | 1時間あたりの上限が拒否した | 待ってから再送 |
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 | 1件のメッセージが10万文字を超えた | 分割する、または一部ずつ質問する |
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はユーザーごとのロックによって、1アカウントにつき同時に1件の生成しか実行しません。そのため同じアカウントで2台の端末が同時に生成することはできません。2回目の試行はGeneration already in progress. Please stop it or wait for it to finish.、HTTP 409、コードgeneration_in_progressで拒否されます。同じ文言は、接続時に生成コーディネーターが競合を検知した場合にも返されます。
同一の文章を2回送信すると、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 | 1件のメッセージが10万文字を超えた |
That system prompt is missing or over the 32,000 character limit. | invalid_system_prompt | システムプロンプトが欠落、または3万2千文字を超えている |
That image reference is not valid. | invalid_image_url | 画像参照が文字列でない、または2,048文字を超えている |
This conversation has {count} messages, over the 100 message limit. | too_many_messages | アプリのチャットルートが、1リクエストに100件を超えるメッセージを含む会話履歴を拒否した |
10万文字の上限は、添付ファイルから抽出されたテキストも含め、メッセージ全体をカウントします。添付ファイルから抽出されたテキストがメッセージの容量に収まらない場合にWhiziがどう動くかは、ファイルのアップロード失敗で別に扱っています。
レート制限と、速度とは無関係な拒否
429の文言は2種類とも上の表にあり、どちらもコードrate_limit_reachedを持ちます。拒否されたリクエストは取り消されるため、429によって利用枠からメッセージが消費されることはありません。制限の期間が過ぎるのを待って再送してください。制限の時間枠と、その背後にあるプラン別の利用枠についてはレート制限とクレジット不足にまとめています。
同じ系統にある拒否の中で、速度とは全く関係のないものが一つあります。Account sharing limit reached. Please use your own Whizi account.、HTTP 403、コードaccount_sharing_limitは、過去24時間以内に1つのアカウントで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が意図的に拒否したものなので、コンポーザー側で直すことは何もありません。利用枠による拒否はクレジット不足、ロック表示されたモデルについてはトラブルシューティングで扱っています。
コンテンツスクリーニングによって拒否されたプロンプトも、送信の失敗ではありません。スクリーニングは利用枠が確保される前、そしてプロバイダーが呼び出される前に実行されるため、拒否されたプロンプトは利用枠を一切消費しません。拒否はHTTP 400として届き、理由はチャット内に表示されます。
送信済みメッセージの編集が失敗する
Whiziには再生成ボタンがないため、プロンプトを編集して再送信することが、ターンをやり直す唯一の方法です。この経路には、それ独自の2種類の失敗があります。
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を押しても何も起こらないのは、返信がまだ生成中であるためで、キー入力の取りこぼしではない
- 生成は1アカウントにつき1件、すべての端末をまたいで同時に1つしか実行されない
- 重複送信は意図的に無視され、その旨を伝える409とメッセージが返る
- チャットには1分あたり、1時間あたりの上限があり、どのプランでも解除されない
- レート制限による拒否は利用枠を一切消費しない
- 1件のメッセージは10万文字が上限
- プロバイダー側のエラーは、設定ではなく再送やモデル切り替えで直る
- 返信の途中でタブを閉じても、返信そのものは失われない
- 認証エラーはページを更新し、再度サインインすることで直る
よくある質問
「Generation already in progress. Please stop it or wait for it to finish.」とはどういう意味ですか?
実行中の返信を停止するか、終わるのを待ってから、もう一度送信してください。この拒否はHTTP 409、コードgeneration_in_progressで、同じアカウントの別の端末が生成している場合にも表示されます。停止処理はサーバー側で行われ、途中までの回答が保存され、ロックが解放され、届かなかったターン分が返還されます。
返信が途中で止まりました。料金は取られましたか?
ストリーム途中の失敗は、インバンドのエラーイベントを出さずに接続を切りますが、途切れる前に届いたテキストはそのまま保持されます。自分で生成を停止した場合、サーバーはプロバイダーからの読み込みをキャンセルし、部分的な回答を保存して、届かなかったターン分を返還します。プロバイダー側の失敗が繰り返される場合は、同じ会話の中で別のモデルに切り替えてください。エラーはWhiziより上流で発生しているものだからです。返ってきたのがHTTP 500の「Something went wrong. Please retry.」であれば、それはモデルの問題ではなく未処理のバックエンドエラー全般に使われる汎用的な本文なので、一度再送し、繰り返す場合は報告してください。
タブを閉じると返信はキャンセルされますか?
いいえ、ごく最初の一瞬だけ例外があります。上流への接続が完了する前にクライアントが切断すると、サーバーは「Generation aborted before it started.」を記録し、HTTP 408を空の本文で返すため、そのリクエストは何も返らなかったように見えます。それを過ぎれば、生成は会話ごとのDurable Objectで実行されているため、返信はクライアントより長く生き残り、そのまま保存されます。「The generation stream is unavailable.」は、コーディネーターが接続先となるストリームを返せない場合に発生し、会話を再読み込みすれば保存済みの内容が表示されます。
Whiziから、メッセージが10万文字の上限を超えていると表示されました。どうすればいいですか?
1件のメッセージは10万文字が上限で、拒否はHTTP 400、コードmessage_too_longです。この文字数には、添付ファイルから抽出されたテキストも含め、メッセージ全体が含まれます。一部ずつ質問するか、より短いファイルを添付してください。抽出された添付ファイルのテキストがメッセージの容量に収まらない場合、Whiziは拒否する代わりに切り詰めて送信し、最初の部分だけが送られたことを警告します。