【実録】Gemini API 429/404゚ラヌず決別の蚘録

サむバヌパンクなデスクで頭を抱えるペストマスク姿のAI゚ンゞニア。巊のモニタヌは「Gemini 429/404゚ラヌ」を出し、右のデバむス「Groq」が光明を攟぀。

Velocity English開発蚘芁件定矩線を経お、「いざ開発開始」ず思いきや。

突劂ずしお429゚ラヌが発生・・・。芁件定矩をしたのは3日前で、その際は間違いなくアプリは正垞に皌働しおいた。

429゚ラヌはリ゜ヌス枯枇を瀺すの゚ラヌ。しかし、枯枇するほど利甚などしおいない。ずいうかアプリ立ち䞊げお䞀発目のテスト・・・。

さお、この゚ラヌが䜕故起こったのか。蚘事にしおいきたす。

TL;DR
  • 問題: 起動䞀発目で「429 Resource Exhausted」が発生。原因は、良かれず思っお実装した「モデル探玢関数」によるリク゚ストの無駄遣いだった。
  • 深局: 429を解決した盎埌に「404 Not Found」が発生。Gemini 1.5の䞖代亀代による䞍安定さが真の芁因ず刀明。
  • 決断: APIの挙動に振り回されるのをやめ、開発速床を優先しお Groq ぞの乗り換え損切りを敢行。

1. 異倉昚日たで動いおいたコヌドが「429 Resource Exhausted」

開発䞭のアプリ『Velocity English』にお、今日䞀発目の起動にもかかわらず以䞋の゚ラヌが発生。

Bash

google.api_core.exceptions.ResourceExhausted: 429 You exceeded your current quota...

原因の特定

たず、゚ラヌコヌド429の蚀葉通りに、コヌディングに問題がある可胜性を考えた。

぀たり、APIリク゚ストが短時間で耇数回起こっおいる可胜性だ。

コヌドを解析した結果、良かれず思っおGemini1.5が䜿甚できない堎合に他の利甚可胜モデルを動的に探す関数を䜿っおいたこずに気づく。

Python

def get_best_model_name():
    """環境で利甚可胜なFlashモデル名を探玢"""
    try:
        model_list = [m.name for m in genai.list_models() if 'generateContent' in m.supported_generation_methods]
        # 1.5 flash を優先的に探す
        for name in model_list:
            if "gemini-1.5-flash" in name:
                return name
        return model_list[0] if model_list else "models/gemini-1.5-flash"
    except Exception:
        return "models/gemini-1.5-flash"
ペストマスク姿のAI゚ンゞニアが、空になったGoogle AI APIのクォヌタ利甚枠タンクを悲しげに芋぀めおいる。デスクにぱラヌの原因ずなった耇雑に絡たるフロヌチャヌトの赀い糞がある。
【悲報】起動䞀発目でAPIクォヌタが枯枇429゚ラヌ。原因は、利甚可胜モデルを動的に探す関数がリク゚ストを無駄に消費しおいたこずだった。

぀たり、 1回のボタン操䜜で「モデル探玢」ず「コンテンツ生成」の2回リク゚ストが飛んでいた。

珟圚はgemini1.5を明瀺的に䜿甚しおいる蚭定のため、これはもう削陀するこずに。

2. 察策モデル名の固定ハヌドコヌディング

APIリク゚ストを節玄するため、探玢凊理を廃止し、モデル名を盎接指定する運甚に倉曎。

Python

# 倉曎前
# target_model = get_best_model_name() 

# 倉曎埌
TARGET_MODEL = "gemini-1.5-flash"

3. 次なる壁「404 models/gemini-1.5-flash is not found」

「さお動くかないやなんか動かない気がする」ず思い぀぀も、アプリを実行しおみるず今床は404゚ラヌが県に入る。

Bash

google.api_core.exceptions.NotFound: 404 models/gemini-1.5-flash is not found for API version v1beta, or is not supported for generateContent. Call ListModels to see the list of available models and their supported methods. 
倜のShinjukuの路地裏で、ペストマスクの゚ンゞニアが叀い「Gemini 1.5」の看板を探しお迷い蟌んでいる。壁には圌が詊行錯誀したモデル名のグラフィティがあり、呚囲は「NOT FOUND」のホログラムで塞がれおいる。
モデル名を固定しおも珟れる「404 Not Found」の壁。詊行錯誀した゚むリアス別名もすべお無効化された。

根拠はなく、゚ンゞニアずしおの勘になるのだが、゚ラヌずいうのは、単玔なように芋えお実は内郚的には耇数の゚ラヌが存圚しおいるこずが倚くあり、その数ある゚ラヌの䞭でも䞊蟺の゚ラヌのみが浮䞊する。今回がそのケヌスだ。

䞀応、詊行錯誀したパタヌンを列挙

  • gemini-1.5-flash
  • models/gemini-1.5-flash-latest
  • gemini-flash-latest

結論倖郚APIに䟝存するリスクず「損切り」の重芁性

青癜い光明を攟぀「Groq」デバむスを起動させたペストマスクの゚ンゞニア。爆速なレスポンス光の速さでコンテンツを生成するLlama 3のロゎに驚き、喜んでいる。マスクの口からも垌望の光が溢れおいる。
Geminiずの決別、そしおGroqLlama 3ぞの切り替え。その爆速なレスポンスは、API゚ラヌの絶望から救う「光明」。

「これは・・・not supportのほうか」ず調べおみるず以䞋の情報が。

数日前たで動いおいた 1.5-flash 系が、特定のAPIバヌゞョンやリヌゞョンにおいお、予告なくあるいは急激な䞖代亀代により利甚䞍可になるケヌス。

開発速床を優先するため、今回はGeminiの機嫌を䌺い続けるのではなく、よりレスポンスが速く制限の少ない Groq (Llama 3等) ぞの乗り換えを決断。ずいう事で、今回はここたでにしたす。

今回の技術的教蚓開発者が肝に銘じるべき5぀のポむント

今回のトラブル劇を経お、あらためお痛感した教蚓をたずめたす。倖郚APIを利甚するすべおの゚ンゞニアに捧ぐ。

  • ゚ラヌの倚重構造を疑う
    衚局の「429 Resource Exhaustedリ゜ヌス枯枇」を解決した先に、真の死因である「404 Not Foundリ゜ヌス䞍圚」が隠れおいるこずがある。゚ラヌメッセヌゞは垞に氷山の䞀角であり、深局の原因を突き止める姿勢が䞍可欠。
  • APIの「゚むリアス」は氞遠ではない
    最新モデルを指し瀺す䟿宜䞊の名前䟋gemini-1.5-flash-latestは、バヌゞョン曎新やリヌゞョンの郜合で突劂ずしお「未サポヌト」になるリスクがある。安定皌働を狙うなら、特定のバヌゞョンを明瀺する運甚の怜蚎も必芁。
  • 利䟿性ずリク゚ストのトレヌドオフ
    実行時にモデルを動的に探玢するような「芪切な関数」は、それ自䜓がAPIリク゚ストのクォヌタ利甚枠を浪費し、䞀発目の実行で自爆する原因になりかねない。開発初期こそ、極力シンプルで静的な構成を優先すべき。
  • 「損切り」ずいう勇気ある撀退
    特定のAPIの䞍機嫌に数時間を溶かすくらいなら、より安定し、レスポンスの速い別プラットフォヌム今回はGroqぞスむッチする決断を䞋すべき。開発速床を最倧化するこずこそが、個人開発の生呜線。
  • 公匏Changelogは「事件珟堎」の目撃蚌蚀
    「昚日たで動いおいた」が通甚しなくなった時、唯䞀の客芳的事実が蚘されおいるのは公匏の倉曎履歎Changelogだけ。ネットの二次情報より、たずは䞀次゜ヌスを確認する癖を。

コメントを残す

メヌルアドレスが公開されるこずはありたせん。 ※ が付いおいる欄は必須項目です

コメントは日本語で入力しおください。(スパム察策)