◉GEMINI LABEN
●ARGON — gemini-4-argon が 10/13 に GA。複雑なコーディング・エージェント・数学・科学向けです●DEEP RES — 旧 Deep Research エージェントは 10/23 に停止済み。呼び出しが失敗する場合は deep-research-preview-04-2026 へ●NANO — gemini-nano-banana-2.1 が GA(10/06)。gemini-3.1-flash-image は非推奨で停止日は未発表です●MCP — ツール結果が 8.5万トークンに膨らんだ事例を、ADK で 310 トークンに包んで抑えた報告が出ています●FLASH — gemini-3.7-flash と 3.5-flash は新しい Flash モデルに自動で回されます(10/08)●NEW — クラッシュ報告を毎回ゼロから読ませない — 既知バグ早見表を先に grep し…●ARGON — gemini-4-argon が 10/13 に GA。複雑なコーディング・エージェント・数学・科学向けです●DEEP RES — 旧 Deep Research エージェントは 10/23 に停止済み。呼び出しが失敗する場合は deep-research-preview-04-2026 へ●NANO — gemini-nano-banana-2.1 が GA(10/06)。gemini-3.1-flash-image は非推奨で停止日は未発表です●MCP — ツール結果が 8.5万トークンに膨らんだ事例を、ADK で 310 トークンに包んで抑えた報告が出ています●FLASH — gemini-3.7-flash と 3.5-flash は新しい Flash モデルに自動で回されます(10/08)●NEW — クラッシュ報告を毎回ゼロから読ませない — 既知バグ早見表を先に grep し…
記事一覧/高度な活用
⬡ 高度な活用/2026-07-28上級

番号が世代を表さなくなった — モデルIDを正規表現で分解する集計を作り直した記録

モデルIDから世代とティアを導く集計が、Flash が 3.6 で Pro の最上位が 3.5 という並びで、音もなく壊れました。正規表現派生とレジストリ結合の按分差を実行結果で並べ、IDを不透明な主キーとして扱い直すまでの記録です。

Gemini API250モデル管理コスト按分オブザーバビリティ3設計4

✦ プレミアム記事

7月21日の週、手元のダッシュボードで「3.5系」と束ねていた帯が、説明のつかない下がり方をしました。

呼び出し回数は減っていません。落ちているのは出力トークンの比率だけです。障害の匂いはしないのに、数字だけが静かにずれていました。

原因を辿ったら、モデルを止めた話でも、プロンプトを変えた話でもありませんでした。集計側が、モデルIDという文字列から世代とティアを読み取っておりました。その読み取りが、ラインナップの並びが変わった瞬間に意味を失っていたのです。

個人開発で回している壁紙アプリの分類処理と、周辺の自動化。呼び出し先が増えるたびに、私はモデルIDを主キーではなく「情報が詰まった文字列」として扱っていました。便利だったぶん、崩れ方も静かでした。

「3.5系」という帯が、何を指しているのか分からなくなった

集計の実装はごく普通のものでした。日次の使用量テーブルに model_id を持ち、ダッシュボード側で正規表現を当てて generation と tier を導出していました。ダッシュボードの定義を触らずにモデルを増やせるので、しばらくは快適に動いていました。

前提にしていたのは、次の2つです。

  1. モデルIDの数字は世代を表し、大きいほど新しいということ
  2. ハイフンで区切られた3番目の語がティア(flash / pro)を表すということ

2026年7月のラインナップは、この2つをどちらも満たしません。Flash 系の最新は 3.6、Pro 系の最上位は 3.5、画像系は 3.1、そして Omni Flash には番号がありません。番号の大小は、世代でも能力でもなくなっていました。

モデルID位置づけ番号から読める?
gemini-3.6-flashFlash 系の新しい版(7/21 公開)読める
gemini-3.5-proPro 系の最上位番号は 3.6 より小さい
gemini-3.5-flash-lite大量処理向けの軽量版3語目が flash
gemini-3.1-flash-lite-image画像生成・編集3語目が flash
gemini-omni-flash動画生成のプレビュー番号がない
imagen-4.0-generate-001停止予定の画像モデル接頭辞が違う

モデル名と提供状況は変わります。手元で表を持つ場合も、判断の前に公式のモデル一覧と料金ページで確かめてください。

実際のラインナップに、その正規表現を当ててみる

議論より先に、手を動かしました。当時使っていた正規表現をそのまま取り出し、7月時点の実IDに当てて出力を眺めます。

# parse_probe.py — 当時の派生ロジックを実IDに当てる
import re
 
MODELS = [
    "gemini-3.6-flash", "gemini-3.5-flash", "gemini-3.5-flash-lite",
    "gemini-3.5-flash-cyber", "gemini-3.5-pro", "gemini-3.1-flash-lite-image",
    "gemini-omni-flash", "gemini-flash-latest", "imagen-4.0-generate-001",
]
 
PAT = re.compile(r"^gemini-(?P<major>\d+)\.(?P<minor>\d+)-(?P<tier>[a-z]+)")
 
print(f"{'model_id':<30} {'gen':<8} {'tier':<8} note")
print("-" * 62)
for m in MODELS:
    hit = PAT.match(m)
    if not hit:
        print(f"{m:<30} {'-':<8} {'-':<8} UNPARSED -> falls to default bucket")
        continue
    gen = f"{hit['major']}.{hit['minor']}"
    print(f"{m:<30} {gen:<8} {hit['tier']:<8} parsed")

実行結果です。

model_id                       gen      tier     note
--------------------------------------------------------------
gemini-3.6-flash               3.6      flash    parsed
gemini-3.5-flash               3.5      flash    parsed
gemini-3.5-flash-lite          3.5      flash    parsed
gemini-3.5-flash-cyber         3.5      flash    parsed
gemini-3.5-pro                 3.5      pro      parsed
gemini-3.1-flash-lite-image    3.1      flash    parsed
gemini-omni-flash              -        -        UNPARSED -> falls to default bucket
gemini-flash-latest            -        -        UNPARSED -> falls to default bucket
imagen-4.0-generate-001        -        -        UNPARSED -> falls to default bucket

厄介だったのは、失敗の出方です。

パースできなかった3件は、まだ救いがあります。バケットが - になるので、グラフを見れば「知らないものが来ている」と気づけます。

問題は、成功したように見える4件のほうでした。flash-lite も flash-cyber も flash-lite-image も、すべて tier=flash として通ってしまいます。例外は出ません。ログにも残りません。値だけが混ざります。

パースエラーは目に入りますが、意味の取り違えは目に入りません。私が半日溶かしたのは、後者のほうでした。

✦

ここまでお読みいただきありがとうございます。

この記事の続きを読む

この先には、実装コードやベンチマーク結果など、実務でお役に立てる内容をご用意しています。このサイトは広告を掲載しておらず、サーバーや開発にかかる費用はメンバーの皆様のご支援で成り立っています。もしお役に立てていましたら、ご支援いただけますと大変ありがたいです。

この記事で得られること
✦2026年7月のラインナップに実際の正規表現を当て、flash-lite と flash-lite-image が flash に吸い込まれる様子を実行結果で確認します
✦「最新モデルを選ぶ」の3実装が gemini-3.5-pro / gemini-3.6-flash / gemini-3.10-flash と別々の答えを返す再現コード
✦出力トークン毎コールの指標が、正規表現集計で 26.52、レジストリ結合で 100.00 と約3.8倍ずれる SQLite の検証台
Stripe による安全な決済 · いつでもキャンセル可能
✦

この記事を購入する

この先の内容をすべてお読みいただけます。一度のご購入で、いつでも何度でもアクセスできます。このサイトは広告を掲載しておらず、皆さまのご支援がサーバー費用などの運営を支えています。

または
メンバーシップなら全記事が読み放題 →
シェア

お読みいただきありがとうございます

Gemini Lab は広告なしで運営しており、サーバー費用などの運営コストはメンバーシップのご支援で賄っています。実装コード・ベンチマーク・本番設計パターンなど、実務でお役立ていただける記事を毎日更新しています。もし読んでよかったと感じていただけましたら、ぜひご覧ください。

  • ✦コピー&ペーストで使える実装コード付き
  • ✦毎日新しい上級ガイドを追加
  • ✦¥580/月 または ¥1,480 の永久アクセス
メンバーシップを見る →

関連記事

⬡ 高度な活用2026-09-24
Gemini に「合っていますか」と聞くのをやめ、答えを伏せたまま分類し直してもらう設計に変えました
自分で付けたラベルの確認を Gemini に頼むと、頷く答えが返りがちです。確認型・反論指示型・伏せ型の三つを比べて伏せ型を選んだ理由と、答えが漏れる経路の塞ぎ方、食い違いだけを人が見る振り分けのコードまで書き残します。
⬡ 高度な活用2026-09-14
BLOCK_NONE を入れても結果が変わらないとき — Gemini のブロックを閾値で動かせるかどうかの見分け方
安全フィルタで止まったとき、閾値を緩めて直る場合と、何をしても直らない場合があります。返ってきたレスポンスのどこを見て、その境目を先に判定するかをまとめました。
⬡ 高度な活用2026-09-05
長い動画を Gemini に辿らせるとき、見つける問いと「無い」を確かめる問いは別々に投げています
9月1日に来たエージェント的動画理解では、どこを観るかをモデル自身が決めます。見つける問いには効きますが、映り込みが無いことの確認には被覆の保証がありません。問いの形で処理モードを分ける判断と、被覆を自分で担保する実装を書き残します。