🔥

Geminiで作ったサイトで画像生成エラー(401)解消とチャットだけでは解消しなかった時に試したこと

に公開

記事の概要

Geminiで作ったサイトでの画像生成エラーがGeminiとのチャットだけでは解消しなかったため、解消方法と解消の際に試したことを記載します。2025年7月時点

画像生成エラーの解消方法

待つことで解消します。

画像生成の仕組みとエラーが発生する理由

Geminiで画像を生成するように依頼すると、Geminiと同じGoogleサービスのImagen3.0を使用して画像を生成してくれます。通常、Imagen3.0を利用するにはAPIKeyの発行が必要なのですが、Gemini上で使っている限りはAPIKeyを自動で用意してくれます。

しかし、Gemini APIを介してImagen 3.0を呼び出す際のリクエストにはレート制限があります。この数字が具体的にどれくらいの制限かは分からないのですが、実体験として画像の生成を繰り返していると、だんだん生成にかかる時間が長くなり、レート制限にかかって失敗するようになりました。最終的には10分に一度しか生成に成功しなくなり、失敗する際は401エラーが発生します。しかし、翌日には画像の生成が再度成功するようになりました。

  1. レート制限 (Rate Limits)
    これは、一定期間内にAPIに送信できるリクエストの数に関する制限です。プロジェクト全体や特定のモデルに対して設定されています。
    Imagen 3.0 (imagen-3.0-generate-002):
    RPM (Requests Per Minute): 20 (プロジェクトごとの1分あたりの最大APIリクエスト数)
    ※Geminiチャットより引用

Geminiとのチャットだけでは解消しなかった時に試したこと

  1. エラーの解消を依頼する

    • Geminiはエラーハンドリングに取り組み、リトライ回数を増やしたり、そのリトライ間隔を上げて対応してくれました。
    • しかし、複数枚の画像を生成するサイトでは、画像生成の長いレート制限を短いリトライ間隔で突破できることはなかったため、チャットをしているだけでは永遠に解決しない状態でした。
  2. エラー発生個所を探す

    • Geminiが生成したコードの中にそれぞれデバッグログを入れてくれるように依頼しました。こうすることで、どこで失敗しているかが明確になります。
  3. エラー発生個所は画像生成だったため、理由をGeminiに聞く。

    • APIKeyの出力
      APIKeyはデバッグログに空で出力されていたため、最初はこれが原因かと思ったのですが、画像生成に成功する場合もAPIKeyは空になっているため違います。Geminiとのチャット内ではAPIKeyは見えないのですが、画像生成時には送ってくれる処理をしている認識です。

    環境からのキーの提供: Canvas環境では、APIキーがユーザー側で明示的に設定されなくても、バックエンドで管理されているAPIキーが __api_key 変数を通じて自動的にあなたのコードに注入されます。つまり、コンソールログで空に見える場合でも、実際のAPI呼び出しの際には有効なキーが内部的に使われている可能性が高いです。
    ※Geminiチャットより引用

    • 呼び出し制限
      上記の通りの回答でこれが原因と考えました。(しかし、レート制限の場合は通常HTTP 429 Too Many Requestsになるとのことです。401になっていたのは別の理由があったかもしれません。いずれにせよ待てば解消するはず)

以上、ありがちな解消方法ですが、参考になれば幸いです。

Discussion