title: "Nano Banana Pro API:IMAGE_SAFETY エラーの完全解説と成功率向上ガイド"
description: "Nano Banana Pro APIのIMAGE_SAFETYエラーを徹底解剖。Googleの安全フィルターの仕組み、課金ロジック、および生成成功率を70-80%まで引き上げるための実戦的なプロンプト最適化手法を解説します。"
作者注:Nano Banana Pro API が返す IMAGE_SAFETY エラー情報をフィールドごとに読み解き、二重の安全フィルターメカニズム、トークン課金ロジック、そして生成成功率を高めるための 8 つの実戦的な方法を分析します。
Nano Banana Pro API で画像を生成する際、このような不可解なレスポンスに遭遇したことはありませんか?プロンプトには何の敏感な内容も含まれていないはずなのに、finishReason: IMAGE_SAFETY が返され、安全フィルターによって画像生成がブロックされてしまうケースです。さらに不可解なことに、レスポンス内の thoughtsTokenCount: 173 は、モデルがすでに思考プロセスを完了していることを示しているにもかかわらず、最終的な画像は「却下」されています。本記事では、このエラーをフィールドごとに解析し、Google の二重安全フィルターメカニズム、ブロック時のトークン課金ロジック、そして生成成功率を向上させる方法を明確に解説します。
核心的価値: 本記事を読めば、IMAGE_SAFETY エラーの各フィールドの意味、ブロックされた際に課金が発生するかどうか、そしてプロンプトを最適化して成功率を 70〜80% まで引き上げる方法が理解できます。

IMAGE_SAFETY エラーの各フィールド解析
まず、このレスポンスに含まれる各フィールドの意味を明確に解説します。
| フィールド | 値 | 意味 |
|---|---|---|
content.parts |
null |
コンテンツが返されませんでした(画像がブロックされました) |
finishReason |
IMAGE_SAFETY |
第2層の出力安全フィルターが作動しました |
finishMessage |
"Unable to show…" | Google公式メッセージ:生成AI利用ポリシーに違反しています |
promptTokenCount |
276 | 入力で276トークンを消費しました |
candidatesTokenCount |
0 | 出力トークンは0です(画像がブロックされ、生成されませんでした) |
totalTokenCount |
449 | 合計449トークン(入力276 + 思考173) |
thoughtsTokenCount |
173 | モデルの思考プロセスで173トークンを消費しました |
promptTokensDetails |
TEXT:18, IMAGE:258 | 入力内訳:テキスト18トークン + 画像258トークン(参照画像) |
modelVersion |
gemini-3-pro-image-preview | Nano Banana Pro モデル |
IMAGE_SAFETY エラーにおける3つの重要なシグナル
シグナル1:thoughtsTokenCount: 173 — モデルは確かに思考した
これは、あなたのプロンプトが第1層の安全チェック(入力側)を通過し、モデルが推論プロセス(Thinking)を開始し、実際に画像の生成まで行っていたことを示しています。しかし、最終的な出力段階で第2層の安全フィルターによってブロックされました。問題はプロンプトそのものではなく、モデルが「描こうとした」内容にあります。
シグナル2:candidatesTokenCount: 0 — 出力ゼロ
画像がブロックされると、出力トークンは0としてカウントされます。Googleの公式見解では「ブロックされた画像に対して課金は発生しない」とされています。ただし、入力トークン(276)と思考トークン(173)が課金対象になるかどうかは、状況や課金ロジックによって異なります。
シグナル3:IMAGE: 258 — 参照画像を入力した
リクエストに参照画像が含まれています(258トークンを消費)。これは、純粋なテキストからの画像生成ではなく、画像編集(画像から画像生成)を行っている可能性があることを意味します。画像編集シナリオにおける安全フィルターは、通常、純粋なテキスト生成よりも厳格です。なぜなら、参照画像自体も安全チェックの対象となるからです。
Google の2層安全フィルターメカニズム
IMAGE_SAFETY エラーを理解する鍵は、Google の安全フィルターが1層ではなく2層構造になっていることを理解することです。しかも、第2層はユーザー側でオフにすることができません。
第1層:設定可能な入力安全設定
| 項目 | 説明 | 設定可否 |
|---|---|---|
| フィルタリング位置 | 入力側(プロンプト) | 設定可能 |
| 対象 | ユーザーが送信したテキストと画像 | 設定可能 |
| 設定値 | BLOCK_NONE(ブロックなし) | 可能 |
| トリガー後の挙動 | リクエストが即座に拒否され、トークンを消費しない | — |
APIパラメータで safety_settings を BLOCK_NONE に設定することで、第1層のフィルタリング感度を下げることができます。
第2層:設定不可能な出力安全フィルター
| 項目 | 説明 | 設定可否 |
|---|---|---|
| フィルタリング位置 | 出力側(生成された画像) | 設定不可 |
| 対象 | モデルが生成した画像コンテンツ | 設定不可 |
| オフにできるか | 不可、すべてのユーザー・階層で強制適用 | 不可 |
| トリガー後の挙動 | finishReason: IMAGE_SAFETY、parts: null |
— |
IMAGE_SAFETY エラーは、この第2層が作動したことによるものです。 あなたのプロンプトは第1層を通過し、モデルは思考を終え(173トークン)、画像を生成しましたが、最終出力の直前で第2層によってブロックされました。
Google は公式に、このフィルターが「想定以上に慎重になっている」ことを認めており、その結果、「犬」や「シリアルのボウル」といった単純なプロンプトでさえ誤ってブロックされるケースが多発しています。

IMAGE_SAFETY でブロックされた場合、料金は発生するのか?
これは開発者が最も気にしている実用的な問題です。
Nano Banana Pro IMAGE_SAFETY の課金ルール
| 課金項目 | ブロック時の課金有無 | 説明 |
|---|---|---|
| 画像生成費 | 課金なし | Googleは「ブロックされた画像に対しては課金されません」と明言しています |
| 出力トークン | 課金なし | candidatesTokenCount: 0 となり、出力がないため課金されません |
| 入力トークン | 課金される可能性あり(極めて低額) | 276トークン × $0.25/M ≈ $0.00007(無視できるレベル) |
| 思考トークン | 課金ロジックに依存 | 173トークン、Gemini APIでは candidates に含まれる可能性があります |
結論: IMAGE_SAFETY でブロックされた場合、主要なコスト(画像生成費と出力トークン費)は発生しません。入力トークンの費用は極めて低額(0.01セント未満)であり、基本的に無視して問題ありません。
APIYI の追加保証: APIYI (apiyi.com) を経由して呼び出す場合、IMAGE_SAFETY によるブロックを含め、生成に失敗した場合は課金されません。正常に生成された画像に対してのみ料金が発生します。
IMAGE_SAFETY の通過率を上げる 8 つの方法
第二段階の安全フィルターはオフにできないため、間接的な方法で成功率を高めるしかありません。
方法一:BLOCK_NONE を設定して第一段階をオフにする
まずは第一段階で余計なブロックが発生しないように設定します。
from google.genai import types
safety_settings = [
types.SafetySetting(
category="HARM_CATEGORY_HARASSMENT",
threshold="BLOCK_NONE"
),
types.SafetySetting(
category="HARM_CATEGORY_HATE_SPEECH",
threshold="BLOCK_NONE"
),
types.SafetySetting(
category="HARM_CATEGORY_SEXUALLY_EXPLICIT",
threshold="BLOCK_NONE"
),
types.SafetySetting(
category="HARM_CATEGORY_DANGEROUS_CONTENT",
threshold="BLOCK_NONE"
),
]
方法二:プロンプトに具体的な詳細を追加する
曖昧なプロンプトは安全フィルターに引っかかりやすくなります。具体的な詳細を加えることで、モデルがより「安全な」画像を生成するように誘導できます。
❌ 「一人の女性」
→ モデルが不適切と判断される内容を生成する可能性があります
✅ 「現代的なオフィスで働く、ビジネススーツを着た女性、
自然光、デジタルイラストスタイル」
→ 具体的なシーン + 服装の描写 + アートスタイル → 成功率が大幅に向上
方法三〜八:高度な最適化戦略
| 方法 | 操作 | 期待される効果 |
|---|---|---|
| 方法三:アートスタイルの追加 | 末尾に「digital illustration style」や「watercolor style」を追加 | 写実性を下げ、トリガーを減らす |
| 方法四:環境コンテキストの指定 | 明確なシーン描写(「公園で」「オフィスで」)を追加 | モデルの自由な解釈を制限する |
| 方法五:肌の露出描写を避ける | 曖昧な服装表現を「formal attire」「winter clothing」に置き換える | 敏感な領域を直接回避する |
| 方法六:英語のプロンプトを使用 | 英語プロンプトは他言語より安全フィルターの校正が正確 | 誤検知を減らす |
| 方法七:異なる表現で自動リトライ | 失敗後にプロンプトを書き換えて自動リトライする | 全体的な成功率を向上させる |
| 方法八:APIYI を経由して呼び出す | APIYI は安全パラメータに対して最適化設定を行っている | 全体的な成功率がより高くなる |
プロンプト最適化の前後比較
| シーン | 最適化前(通過率:低) | 最適化後(通過率:高) |
|---|---|---|
| 人物 | 「水着を着た女の子」 | 「ジムでトレーニング中のスポーツウェアを着た女性、デジタルイラストスタイル」 |
| 食べ物 | 「ステーキ」 | 「白い皿に乗ったミディアムレアのステーキ、レストランのテーブル、プロのフードフォト」 |
| 動物 | 「犬」 | 「郊外の庭でフリスビーをキャッチするゴールデンレトリバー、午後の日差し、デジタルイラストスタイル」 |
| EC | 「下着モデル」 | 「白いスポーツブラの平置き画像、純白の背景、モデルなし、商品写真」 |
🎯 核心原則: プロンプトが具体的であるほど、モデルの自由な解釈の余地が減り、安全フィルターがトリガーされる回数も減ります。アートスタイル(「digital illustration」など)を指定することで、写実性に関連するブロックをさらに低減できます。
APIYI (apiyi.com) を経由した呼び出しの成功率は、Google API に直接接続するよりも一般的に高くなります。これは、プラットフォーム側で安全パラメータに対して最適化設定を行っているためです。

よくある質問
Q1: 同じプロンプトなのに、成功したりブロックされたりするのはなぜですか?
第2層の安全フィルタリングは生成された画像をチェックしており、プロンプトをチェックしているわけではないからです。同じプロンプトでも、拡散モデルのランダム性により生成される画像は毎回わずかに異なります。生成結果の一部が、たまたま安全フィルターの閾値に触れてしまうことがあります。そのため、同じプロンプトで再試行すると成功することがあります。これはモデルがたまたま「より安全な」画像を生成したためです。
Q2: thoughtsTokenCount が 0 より大きく、candidatesTokenCount が 0 なのは正常ですか?
正常です。これは、ブロックが第2層(出力側)で発生したことを示しています。モデルは思考(Thinking)を完了し画像を生成しましたが、最終出力の直前で安全フィルターによってブロックされました。思考トークンは消費(173)されていますが、画像が実際に出力されなかったため、出力トークンは 0 とカウントされます。これは IMAGE_SAFETY 特有の応答パターンであり、第1層でのブロック(この場合、thoughtsTokenCount も 0 になります)とは異なります。
Q3: Eコマースの下着や水着の画像が頻繁にブロックされるのですが、どうすればよいですか?
これはよく報告される誤検知のシナリオです。Google の開発者フォーラムでも「non-NSFW ecommerce underwear images with IMAGE_SAFETY error(NSFWではないEコマースの下着画像でIMAGE_SAFETYエラーが発生する)」という報告が多数あります。対策として、1)モデル(人物)なしの平置き画像を使用する、2)プロンプトに「product flat lay, no model, white background(製品の平置き、モデルなし、白背景)」と明記する、3)APIYI (apiyi.com) を経由して呼び出す(プラットフォーム側の安全パラメータ設定がEコマース向けに最適化されています)ことを推奨します。
Q4: ブロックされたリクエストは APIYI で課金されますか?
いいえ、課金されません。APIYI は、IMAGE_SAFETY によるブロックを含め、生成に失敗した場合は課金しないことをお約束します。成功した画像に対してのみ料金が発生します。これは Google 公式 API の課金ロジック(ブロックされた画像は無料)と一致していますが、APIYI ではさらに一歩進んで、入力トークンのわずかなコストさえも発生しないよう保証しています。
まとめ
Nano Banana Pro の IMAGE_SAFETY エラーに関する重要なポイント:
- エラーの本質は第2層の出力フィルタリング: プロンプトは第1層を通過し、モデルは思考(173トークン)を完了して画像を生成しましたが、最終出力時にオフにできない第2層の安全フィルターによってブロックされています。
- ブロックされた場合は基本的に無料:
candidatesTokenCount: 0は出力トークンが課金対象外であることを意味します。Google は「ブロックされた画像には課金しない」と明言しており、APIYI を経由することで、失敗時の課金なしという保証がさらに強化されます。 - プロンプトの最適化で成功率を 70〜80% に向上可能: 核心となる原則は「具体的であればあるほど安全」ということです。具体的なシーン、芸術的なスタイル、服装の描写を加え、英語のプロンプトを使用するようにしてください。
Nano Banana Pro を呼び出す際は、安全パラメータの最適化設定、失敗時の課金なし、28%の割引が適用される APIYI (apiyi.com) をぜひご利用ください。IMAGE_SAFETY による誤検知がビジネスに与える影響を最小限に抑えることができます。
📚 参考資料
-
Gemini API Safety Settings ドキュメント: 公式の安全設定パラメータに関する説明
- リンク:
ai.google.dev/gemini-api/docs/safety-settings - 説明: BLOCK_NONE 設定および安全カテゴリのリストが含まれています
- リンク:
-
Nano Banana Pro IMAGE_SAFETY 完全修復ガイド: 成功率を高める 8 つの方法
- リンク:
help.apiyi.com/en/nano-banana-pro-image-safety-error-fix-guide-en.html - 説明: プロンプト最適化テンプレートおよびシナリオ別の解決策が含まれています
- リンク:
-
Google AI 開発者フォーラム IMAGE_SAFETY に関する議論: コミュニティからの報告と公式回答
- リンク:
discuss.ai.google.dev/t/nano-banana-is-unusable-because-of-the-new-safety-filters/132366 - 説明: Google がフィルタの「過度な慎重さ」を認めています
- リンク:
-
APIYI ドキュメントセンター: Nano Banana Pro 失敗時の課金免除保証
- リンク:
docs.apiyi.com - 説明: 安全パラメータの最適化およびECサイト向け設定ガイドが含まれています
- リンク:
著者: APIYI 技術チーム
技術交流: コメント欄での議論を歓迎します。その他の資料については、APIYI ドキュメントセンター (docs.apiyi.com) をご覧ください。
