GEMINI LABEN
NANOLITE — Nano Banana 2 Liteが登場しました。Googleで最も速く、最もコスト効率の高いGemini Imageモデルで、軽量な画像生成を安く回したい用途に向いていますOMNIFLASH — Gemini Omni Flashがpublic previewになりました。ネイティブにマルチモーダルなモデルで、企業や開発者が独自の動的な動画ワークフローを構築できますAGENTS — Managed Agentsが拡張されました。background: trueでサーバー側の非同期実行とポーリング、リモートMCPサーバー連携、対話をまたぐ認証情報のリフレッシュに対応しますMEMORY — Memory BankのIngestEvents APIが一般提供になりました。イベントの取り込みとメモリ生成を分離し、コンテンツを継続的にストリームできますTHROUGHPUT — Provisioned Throughputで、同一モデル・同一リージョンに対して最大7件の保留オーダーを提出できるようになりましたDEPRECATE — 画像生成モデルは8月17日に、Gemini Enterprise Agent PlatformのGrok 4.1系は8月20日に停止される予定ですNANOLITE — Nano Banana 2 Liteが登場しました。Googleで最も速く、最もコスト効率の高いGemini Imageモデルで、軽量な画像生成を安く回したい用途に向いていますOMNIFLASH — Gemini Omni Flashがpublic previewになりました。ネイティブにマルチモーダルなモデルで、企業や開発者が独自の動的な動画ワークフローを構築できますAGENTS — Managed Agentsが拡張されました。background: trueでサーバー側の非同期実行とポーリング、リモートMCPサーバー連携、対話をまたぐ認証情報のリフレッシュに対応しますMEMORY — Memory BankのIngestEvents APIが一般提供になりました。イベントの取り込みとメモリ生成を分離し、コンテンツを継続的にストリームできますTHROUGHPUT — Provisioned Throughputで、同一モデル・同一リージョンに対して最大7件の保留オーダーを提出できるようになりましたDEPRECATE — 画像生成モデルは8月17日に、Gemini Enterprise Agent PlatformのGrok 4.1系は8月20日に停止される予定です
記事一覧/API / SDK
API / SDK/2026-06-03上級

Gemini 生成物の来歴を残す — 再現と監査のためのプロベナンス設計

数ヶ月後に「この出力はどのモデルとプロンプトで作ったのか」が追えなくなる前に。Gemini の生成物へ来歴メタデータを刻み、品質調査とモデル移行を再現可能にする設計をまとめます。

Gemini API191プロベナンス再現性2本番運用47個人開発者8

プレミアム記事

アプリの壁紙自動分類に Gemini を使い始めて半年ほど経った頃、一枚の画像が「夜景」ではなく「抽象」に分類されている、というユーザー報告を受け取りました。直したいと思ったのですが、その分類を下したのがどのモデルだったのか、どんなプロンプトを渡していたのか、手元のログからは追えませんでした。出力だけが残っていて、来歴(プロベナンス)が残っていなかったのです。

私は2014年から個人開発でアプリを運営してきました。累計5,000万ダウンロードを超えるなかで、壁紙・癒し・引き寄せ系のアプリを Gemini で支えています。生成 AI を本番に組み込むと、こうした「あとから理由を問われる」場面が必ず来ます。そのとき手がかりになるのは出力そのものではなく、その出力が「いつ・どのモデルとプロンプトと設定で」生まれたかという来歴です。ここでは、生成物に来歴を刻み込み、半年後でも当時の条件を組み直せるようにするための設計を、実装レベルでまとめます。

来歴として最低限刻むべきフィールド

来歴は欲張ると保存コストが膨らみ、削りすぎると再現の役に立ちません。私が壁紙分類と要約系の機能で実際に運用して、過不足がなかった最小セットは次の通りです。

まず生成条件として、モデル名(gemini-2.5-flash のような ID)、その時点のモデル世代、温度・thinking_budgetseed といった生成パラメータ。次に内容の指紋として、プロンプトテンプレートの ID とその正規化ハッシュ、入力全文のハッシュ、出力全文のハッシュ。最後に環境として、SDK のバージョンと生成時刻。これだけで「同じ条件をもう一度組めるか」「出力が当時と変わっていないか」の両方を判定できます。

ここで重要なのは、プロンプト全文をそのまま保存しないことです。プロンプトには利用者の入力が混ざることがあり、PII を抱え込むリスクがあります。全文ではなくハッシュを残し、テンプレートだけを別途バージョン管理するのが安全です。

import hashlib
import json
import time
from dataclasses import dataclass, asdict
 
def canonical_prompt(template_id: str, variables: dict) -> str:
    # 変数の順序ゆらぎを排除してから結合し、同じ意味の入力を同じ文字列にそろえる
    normalized = json.dumps(
        variables, ensure_ascii=False, sort_keys=True, separators=(",", ":")
    )
    return f"{template_id}\x1f{normalized}"
 
def sha256_short(text: str) -> str:
    return hashlib.sha256(text.encode("utf-8")).hexdigest()[:16]
 
@dataclass
class Provenance:
    model: str
    model_generation: str
    prompt_template_id: str
    prompt_hash: str
    temperature: float
    thinking_budget: int | None
    seed: int | None
    input_hash: str
    output_hash: str
    sdk_version: str
    created_at: float

プロンプトを「ハッシュで固定する」ということ

来歴の心臓部はプロンプトハッシュです。ただし素朴に「プロンプト文字列を SHA-256 にかける」だけだと、同じ意味なのにハッシュが変わる事故が起きます。変数の順序が違う、空白が一つ多い、改行コードが混ざる。こうした表記ゆれを吸収するために、ハッシュを取る前に正規化(canonicalization)を挟みます。

上の canonical_prompt は、テンプレート ID と「キーでソートした変数の JSON」を区切り文字で連結します。これにより {"style": "夜景", "lang": "ja"}{"lang": "ja", "style": "夜景"} は同じハッシュになります。テンプレート本文そのものは別管理にして、テンプレートを書き換えたら ID を上げる運用にすると、「プロンプトの中身が変わったのにハッシュが同じ」という最悪のケースを避けられます。

私はテンプレート ID に wallpaper-classify-v3 のような版番号を含め、本文をリポジトリでバージョン管理しています。本文を1文字でも変えたら版番号を上げる、という規律だけで、来歴の信頼性は大きく変わります。宮大工だった祖父たちは、刻んだ墨付けを残すことで後の世代が同じ仕事をたどれるようにしていました。プロンプトハッシュは、それと同じ「あとからたどれる墨付け」だと感じています。

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

この記事の続きを読む

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

この記事で得られること
生成1件ごとに刻むべき来歴フィールドの最小セット(モデル版・プロンプトハッシュ・温度・seed・入出力ハッシュ)
温度0でも揺れる Gemini で「何が再現でき、何が再現できないか」の実測ベースの線引き
壁紙分類アプリの誤分類を3分で再現できた、来歴サイドカーの保存先トレードオフ
Stripe による安全な決済 · いつでもキャンセル可能

この記事を購入する

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

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

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

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

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

関連記事

API / SDK2026-06-17
生成文の『文体の癖』を数値で見張る — 既定モデルの差し替えを文体ドリフトで検知する設計
既定モデルが頭越しに変わると、出力の正しさはそのままでも文体の癖が静かにズレます。生成文の敬体率や文長分布をフィンガープリント化し、統計的に文体ドリフトを検知してパイプラインを止める設計を、依存ライブラリなしの実装で解説します。
API / SDK2026-06-14
Gemini APIの『デフォルトモデルが上がる』を事故にしない — モデルIDの固定と既定変更の検知設計
既定モデルが静かに上がると、同じコードのまま出力長・推論挙動・コストが変わります。モデルIDを単一の真実の源で固定し、レスポンスの実効モデルを検証して既定変更を検知する設計を、実装レベルで解説します。
API / SDK2026-06-02
Gemini APIの設定ドリフトを止める — モデルID・安全設定をコード化して環境差を検出する
同じコードなのにアプリごとに挙動が違う原因の多くは、モデルIDや安全設定の環境差です。設定をコード化し、本番の実効設定をスナップショットして差分を検出する設計を、実装レベルで解説します。
📚RECOMMENDED BOOKS
大規模言語モデル入門
山田育矢
LLM開発
生成AIプロンプトエンジニアリング入門
我妻幸長
プロンプト
Claude CodeによるAI駆動開発入門
平川知秀
AI駆動開発
※ アフィリエイトリンクを含みます
もっと見る →