Gemini に「合っていますか」と聞くのをやめ、答えを伏せたまま分類し直してもらう設計に変えました
自分で付けたラベルの確認を Gemini に頼むと、頷く答えが返りがちです。確認型・反論指示型・伏せ型の三つを比べて伏せ型を選んだ理由と、答えが漏れる経路の塞ぎ方、食い違いだけを人が見る振り分けのコードまで書き残します。
浮世絵カタログの表記ゆれ照合を、正規化と候補列挙の二層で組む手順
同じ絵師名が三通りに散らばったカタログを揃えるとき、Gemini に同一判定をさせると世代違いが混ざります。正規化を先に置き、モデルには候補の列挙だけを頼む二層構成を、動くコードと費用の見積もりつきでお伝えします。
Gemini に渡す前に表が壊れる場所は結合セルと2行ヘッダ
スプレッドシートの表をそのまま Gemini に渡すと、結合セルと2行ヘッダで行の所属が失われます。抽出時点で何が消えるかを実測し、平坦化と集計行の検出までを Python で組みます。
Gemini の訳文で %1$s が消えても、レビューでは気づけません。文字列リソースへ戻す前の検査
Gemini に訳させたアプリの文字列から書式指定子が抜けたり全角になったりする事象を、実運用の中で拾い続けています。壊れ方を4種類に整理し、生成時に守らせる書き方と、受け取った直後に弾く短い検査を紹介します。
Gemini に書かせたレビュー返信を、送信前に止めるための最小の検査
ストアのレビュー返信は下書きより送信後が怖い作業です。守れない約束・連絡先の混入・文体崩れを送信前に機械で止める Python の検査を、実際に走らせた結果と誤検出の修正まで含めて置いておきます。
gemini-flash-latest への追従をやめた日 — モデルの静かな置き換えに耐えるバッチ設計
発表を伴わないモデル更新で、安定していたバッチの拒否率が一晩で4倍を超えました。gemini-flash-latest への追従をやめ、ピン留めとカナリア昇格の二段構えに移行するまでの実測と設計判断をまとめております。
App Store 審査リジェクト対応に Gemini API を組み込む — 通知の構造化から Resolution Center 返信までの運用記録
App Storeの審査リジェクト通知をGemini APIで3層のJSONに構造化し、ガイドライン照合・Resolution Center返信ドラフト・提出前セルフチェックへつなげた個人開発の運用記録です。
responseSchema の enum 指定なのに違う文字列が返る — Gemini API で起きる原因と回避策
Gemini API の responseSchema で enum を指定したのに許可値以外の文字列が返る現象を、最小再現コードから原因まで掘り下げます。プロンプトへの許可値明示、受け取り側のバリデーションとリトライ、SDK バージョン差の確認という3つの対処を示します。
Gemini API のレスポンスを Schema 検証で守る — 想定外フォーマットを本番で漏らさない設計
Gemini API の構造化出力は便利ですが、本番運用で「想定外フォーマット」が混じる瞬間は必ず来ます。Zod / Pydantic を組み合わせた多層検証、失敗時の縮退戦略、再試行と修復プロンプトの設計まで、個人開発で運用している防御線をまとめます。
分類ラベルの近ミスはリトライで直らない — 閉じた語彙を正規化する層を挟んだ実測ノート
responseSchema の enum を外したラベルをリトライで直そうとすると同じ近ミスが返ります。壁紙アプリの30分類バッチで外れ方の分布を測り、別名表と埋め込み最近傍で正規化する受け入れ層を挟んだ実装と実測値をまとめました。
構造化出力のストリーミングで、完成したフィールドから順に画面へ出す — 不完全なJSONを安全に読む部分パース
responseSchema でストリーミングすると、JSONが閉じるまで画面は真っ白なまま待たされます。不完全なJSONを安全に補完して読む部分パースと、一度出した値を後退させない逆流防止を組み、最初のフィールドまでの体感を実測とともに縮める設計を残します。
長尺の音源を Gemini に「聴かせて」章立てを作る — タイムスタンプ付き構造化抽出の実装
1時間を超えるヒーリング音源を手作業で章立てしていた作業を、Gemini の音声理解でタイムスタンプ付きの構造化データに置き換えた実装記録です。Files API での長尺アップロード、response_schema での JSON 固定、そして実際にハマったタイムスタンプのずれ・幻の無音区間を検証で潰すところまで、動くコードで残します。