モデル入れ替えの合否を一致率で決めると、カテゴリ分布のずれは通過します
画像分類バッチのモデルを差し替えたとき、ゴールデンセットの一致率は通るのにカテゴリ構成比だけが動くことがあります。必要サンプル数を実際に計算し、切替前に判定できる対応比較のハーネスを組みました。
1日2回のはずの分類バッチが1回しか動かない — 成果物から実行回数を復元する
定期実行のうち片方の枠だけが不発火し、失敗ログが一件も出ないまま処理量が半分になっていた運用の記録です。成果物と未処理残高から実行回数を復元し、起きなかった回を名指しする手順を動くコードでまとめます。
gemini-flash-latest への追従をやめた日 — モデルの静かな置き換えに耐えるバッチ設計
発表を伴わないモデル更新で、安定していたバッチの拒否率が一晩で4倍を超えました。gemini-flash-latest への追従をやめ、ピン留めとカナリア昇格の二段構えに移行するまでの実測と設計判断をまとめております。
structured output の任意フィールドが null・空文字・キー欠落で三様にぶれる — 正規化ゲートで一つの表現に畳む
Gemini の structured output で任意フィールドが null・空文字・キー欠落の三態にぶれ、下流が壊れる問題を、responseSchema の nullable 宣言と出力後の正規化ゲートで一つの表現に畳む実装として整理します。個人開発の夜間バッチでの実測つきです。
Gemini のコンテキストキャッシュが途中で失効する — 一時停止するパイプラインで TTL 切れを検知して張り直す
夜間バッチや再試行で処理が一時停止すると、Gemini の明示的コンテキストキャッシュは静かに TTL 切れを起こし、以降の呼び出しが全トークン課金へ戻ります。残り有効期限を握って張り直すか素通しするかを費用で決める、小さなリース設計をまとめました。
Nano Banana 2 Lite で大量画像生成のコストを設計する — 実測で使い分けを決める
最速・最安の画像モデル Nano Banana 2 Lite を大量生成の現場に組み込むコスト設計メモです。1枚あたりコストを式で持つ考え方、品質モデルと組み合わせる二層構成、静かなリトライにしない失敗の扱い、移行と廃止スケジュールの見方まで実測を交えて書きます。
countTokens でバッチ投入前にコスト超過を止める — 既定モデルが変わっても崩れない予算ゲートの設計
夜間バッチが想定外に高くつく原因は、投入後にしかコストが分からないことです。countTokens を起点に、思考トークンまで織り込んだ予算ゲートを設計し、既定モデルが入れ替わっても見積もりが崩れない運用に立て直します。
Gemini Vision APIで壁紙アプリの画像を自動カテゴリ分類する — 3000枚を30カテゴリに処理した実践記録
壁紙アプリの画像3000枚を手動で分類するのは現実的ではありません。Gemini Vision APIを使った自動カテゴリ分類パイプラインの設計と実装、コスト分析まで、実際に動かして見えてきたことをすべて書きます。
Gemini 2.5 Pro × Python 非同期処理:高スループットAPIシステムの本番構築
Python の asyncio で Gemini 2.5 Pro API の処理能力を引き出す高スループット構成を解説します。非同期クライアントの実装、指数バックオフとジッターによるレート制限対策、非同期ストリーミング、大量ドキュメント処理パイプラインまでコードつきです。