先日の続き.使えるモデルがわかったので,次の様に書き換え.
# -*- coding: shift_jis -*-
from google import genai
import PIL.Image
import time
# APIキー(取得した実際のキーに書き換えてください)
API_KEY = "YOUR_API_KEY_HERE".strip()
client = genai.Client(api_key=API_KEY)
# 画像の読み込み(リサイズ済みのものを推奨)
try:
# パスは環境に合わせて適宜修正してください
img = PIL.Image.open("test.jpg")
except Exception as e:
print(f"画像読み込みエラー: {e}")
exit()
print("Geminiに最短指示で問い合わせ中(5分待機後を推奨)...")
try:
# 負荷を最小限にするため、プロンプトを極限まで短縮
response = client.models.generate_content(
model="gemini-2.0-flash",
contents=["Detect cat", img]
)
print("-" * 30)
print("AIからの解析結果:")
if response.text:
print(response.text)
else:
print("応答が空です(セーフティフィルタ等の影響)")
print("-" * 30)
except Exception as e:
print(f"エラーが発生しました: {e}")
# 429エラーが出た場合、次に何秒待つべきかヒントが出るはずです
input("Press Enter to exit...")
すると,また別のエラー.
D:\> python t_gmn_3.py
Geminiに最短指示で問い合わせ中(5分待機後を推奨)...
エラーが発生しました: 429 RESOURCE_EXHAUSTED. {
'error': {
'code': 429,
'message': 'You exceeded your current quota, please check your plan and billing details. For more information on this error, head to: https://ai.google.dev/gemini-api/docs/rate-limits. \n* Quota exceeded for metric: generativelanguage.googleapis.com/generate_content_free_tier_input_token_count, limit: 0, model: gemini-2.0-flash\n* Quota exceeded for metric: generativelanguage.googleapis.com/generate_content_free_tier_requests, limit: 0, model: gemini-2.0-flash\nPlease retry in 40.504743079s.',
'status': 'RESOURCE_EXHAUSTED',
'details': [
{
'@type': 'type.googleapis.com/google.rpc.Help',
'links': [{'description': 'Learn more about Gemini API quotas', 'url': 'https://ai.google.dev/gemini-api/docs/rate-limits'}]
},
{
'@type': 'type.googleapis.com/google.rpc.QuotaFailure',
'violations': [
{
'quotaMetric': 'generativelanguage.googleapis.com/generate_content_free_tier_requests',
'quotaId': 'GenerateRequestsPerMinutePerProjectPerModel-FreeTier',
'quotaDimensions': {'location': 'global', 'model': 'gemini-2.0-flash'}
}
]
},
{
'@type': 'type.googleapis.com/google.rpc.RetryInfo',
'retryDelay': '40s'
}
]
}
}
Gemini では次の様に返してくる.
2026年現在の Gemini 2.0 Flash(Free tier)における制限事項をまとめました。
Python で 429 エラーが出たのは、主に「1分あたりのリクエスト数」または「1分あたりのトークン数」の制限に抵触したためです。
Gemini 2.0 Flash 無料枠の制限(目安)
| 項目 | 制限値 | 備考 |
|---|---|---|
| RPM (Requests Per Minute) | 15回 | 1分間に投げられるリクエスト数 |
| RPD (Requests Per Day) | 1,500回 | 1日あたりの合計リクエスト数 |
| TPM (Tokens Per Minute) | 100万トークン | 画像を送る場合、1枚で数千〜数万トークンを消費します |
なぜ今回の Python 実行でエラーが続いたのか
- トークン消費量: 画像データはテキストに比べて非常に多くのトークンを消費するため、1回のリクエストでも「1分間の上限」に近い負荷がかかることがあります
- リトライ間隔: 429 エラーが出た直後に再試行すると、サーバー側で「まだ制限時間内である」と判定され、さらに待ち時間が延びる(ペナルティのような挙動)ことがあります
- 共有クォータ: 同じ API キーや同じプロジェクトで複数のモデル(Flash と Pro など)を試している場合、それらが共通の制限枠を削り合っている可能性があります
出典: Rate limits | Gemini API | Google AI for Developers
※数値は公式ドキュメントに基づいた確実な情報ですが、画像消費トークン数については解像度等に依存する推測値を含みます。

画像のアップロードありがとうございます。非常に可愛らしい三毛猫の写真ですね。
この画像(test.jpg)のプロパティを確認したところ、解像度が 1024×768 前後あり、ファイルサイズも数百KB以上あると推測されます。
実は、Gemini 2.0 Flash の無料枠(Free Tier)において、画像を含んだリクエストは「1分あたりのトークン消費量」の制限に非常に引っかかりやすく、一度制限がかかると 「46秒待て」と出ても、実際にはそれ以上のインターバルを置かないと解除されない ケースが多々あります。
解決のための3つのステップ
1. 画像の徹底的なリサイズ(最優先)
現在の test.jpg を、ペイントソフト等で 幅 400px 程度 まで思い切って縮小し、別名で保存して試してみてください。
- 画像が小さいほど消費トークンが劇的に減り、429 エラーを回避できる確率が上がります
- 400px もあれば、猫の顔などの物体検出には十分な情報量です
2. プロンプトの簡略化
リクエストをさらに軽くするため、一時的にプロンプトを最短にします。
# contents の中身をこれだけに書き換えてみてください
contents=[
"Detect cat", # 最短の指示
img
]
次にやってみてほしいこと
- 幅 400px にリサイズした画像を用意する
- 5分間、完全に何もしないで待つ(サーバー側の制限を完全にリセットさせるため)
- リサイズした画像を指定して再実行する
これで座標(例:[ymin, xmin, ymax, xmax])が1つでも取れれば、それを「正解データ」として、C++ 側で DIB を Base64 文字列にする処理の実装に進めます。
もしこれでもダメな場合は、画像の代わりに「テキストのみ」を送って 429 が出るか確認し、通信経路(APIキー自体の制限状況)を切り分けましょう。
時間を空けたり(週末を挟んだ),画像サイズを小さくしても変わらない.
いろいろとやって,次のコードを案内された.
# -*- coding: shift_jis -*-
from google import genai
# APIキーは秘匿情報のため伏せ字にしています
API_KEY = "AIzaSy..."
client = genai.Client(api_key=API_KEY)
try:
print("テキストのみで疎通テスト中...")
response = client.models.generate_content(
model="gemini-2.0-flash",
contents=["Hello, are you working?"]
)
print("AIからの回答:", response.text)
except Exception as e:
print("エラー:", e)
※実際の動作には、有効なAPIキーを API_KEY 変数に設定する必要があります。
が,これでも 429 RESOURCE_EXHAUSTED .
その後もいろいろとやり取りしたが,うまくいかない.
現状の分析
- limit: 0 の意味: リクエスト上限が「0」に設定されており、1文字も送ることができない状態です
- 原因: 現在の運用では、有効な支払い手段(カード)が紐付いていないプロジェクトには無料枠すら開放されないケースがあります
解決のための手順
- Google AI Studio の「お支払い情報を設定」を完了させる
- プロジェクトにカード情報を紐付ける(無料枠の範囲内であれば課金は発生しません)
- 制限が解除されたことを確認し、再度Pythonコードを実行する
どうも Gemini が情報を持っていないように感じたので,「最新の情報で,もう一度調べて」と指示.
2026年2月現在の最新状況を調査した結果、429 RESOURCE_EXHAUSTED(limit: 0) が発生し続ける致命的な理由が判明しました。
現在、Google API の運用ルールが大幅に変更されており、「特定のモデル」は無料枠(APIキーのみ)での提供が完全に終了しています。
1. 2026年現在の「無料枠」の真実
- Gemini 2.0 / 2.5 系列の制限:
gemini-2.0-flashやgemini-2.5-proなどの最新世代モデルは、現在 「支払い情報の登録(Billing有効化)」がないプロジェクトではクォータ(制限枠)が 0 に設定されています。これがlimit: 0の正体です - 1.5 以前の廃止:
gemini-1.5-flashや1.0などの旧世代モデルは、2026年に入り 完全にリタイア(廃止) されました。そのため、これらを呼び出すと404 NOT_FOUNDになります
2. 現在「唯一」無料で動く可能性があるモデル
models.list() に含まれていた中で、現在も支払い情報の登録なしで無料枠が残っている可能性があるモデルは以下の通りです。
| モデル名 | 2026年2月現在のステータス |
|---|---|
gemini-2.5-flash |
最有力候補。無料枠で唯一 100〜250 RPD が割り当てられているとの報告があります |
gemini-2.5-flash-lite |
次点候補。1,000 RPD 程度の無料枠がある可能性があります |
3. 【最終確認用】t_gmn_5.py
このコードで gemini-2.5-flash を試してください。これで limit: 0 が出るなら、APIキー経由での「完全無料利用」は Google によって完全に封鎖されたことになります。
# -*- coding: shift_jis -*-
from google import genai
# 新しいプロジェクトで作成したAPIキー(伏せ字)
API_KEY = "AIzaSy..."
client = genai.Client(api_key=API_KEY)
print("2026年最新モデル gemini-2.5-flash でテスト中...")
try:
# 2026年現在、無料枠が残っている可能性が最も高いモデル
response = client.models.generate_content(
model="gemini-2.5-flash",
contents=["Hello. Is this model available for free tier?"]
)
print("-" * 30)
print("AI回答:", response.text)
print("-" * 30)
except Exception as e:
print("エラー詳細:", e)
input("Press Enter to exit...")
※本情報は2026年2月時点の調査に基づくものであり、Google のポリシー変更により予告なく変更される場合があります。
やっと,

D:\>python t_gmn_5.py
2026年最新モデル gemini-2.5-flash でテスト中...
------------------------------
AI回答: Yes, I am a large language model trained by Google, and interactions with me (or similar models in the Gemini family) are generally available for free through various Google platforms, such as the standard Gemini web experience.
There are also premium tiers, like "Gemini Advanced," which utilize more powerful models (e.g., Gemini Ultra) and are available as part of a paid subscription (like Google One AI Premium Plan). However, the basic interaction you're having right now is typically free.
------------------------------
Press Enter to exit...
D:\>python t_gmn_6.py
test.jpg を解析中...
------------------------------
AIからの解析結果:
```json
[
{"box_2d": [79, 87, 1000, 853], "label": "cat"}
]
```
------------------------------
Press Enter to exit...
まとめも,Gemini で作成したもの.
まとめ:2026年の Gemini API 攻略法
数日間にわたる試行錯誤の結果、Gemini API(無料枠)で 429 RESOURCE_EXHAUSTED (limit: 0) を回避するための重要な教訓が得られました。
- モデル選択がすべて: 2026年現在、
gemini-2.0-flash等の主要モデルは支払い情報の登録が必須(登録なしだと limit: 0)となっています。 - 2.5 系列を狙う: 今回のように
gemini-2.5-flashを指定することで、完全に無料で疎通できる「隠れた枠」が存在する場合があります。 - 画像解析はリサイズが鉄則: 疎通ができても、大きな画像はすぐにトークン上限に達します。幅 400px 程度へのリサイズは必須と言えます。
ようやく Python で物体検出(box_2d)の座標が取れるようになりました。