L'erreur finishReason: "IMAGE_SAFETY" lors de l'appel à l'API Nano Banana Pro est l'un des problèmes les plus fréquents rencontrés par les développeurs. Alors qu'il s'agit d'une simple photo de produit ou d'un paysage tout à fait normal, le système l'intercepte en jugeant qu'elle "enfreint la politique d'utilisation de l'IA générative de Google". Cet article analyse en profondeur le mécanisme de déclenchement de l'erreur IMAGE_SAFETY et propose 8 solutions pratiques pour vous aider à réduire considérablement le taux de faux positifs.
Valeur ajoutée : En lisant cet article, vous comprendrez le fonctionnement du filtrage de sécurité de Nano Banana Pro et maîtriserez des astuces concrètes pour éviter les blocages injustifiés, faisant passer votre taux de réussite de génération d'image de 60 % à plus de 95 %.

Analyse de l'erreur IMAGE_SAFETY de Nano Banana Pro
Commençons par décrypter la réponse d'erreur que vous recevez :
{
"candidates": [
{
"content": { "parts": null },
"finishReason": "IMAGE_SAFETY",
"finishMessage": "Unable to show the generated image...",
"index": 0
}
],
"usageMetadata": {
"promptTokenCount": 531,
"candidatesTokenCount": 0,
"totalTokenCount": 824,
"thoughtsTokenCount": 293
},
"modelVersion": "gemini-3-pro-image-preview"
}
Interprétation des champs clés de l'erreur
| Champ | Valeur | Signification |
|---|---|---|
finishReason |
IMAGE_SAFETY |
L'image a été bloquée par le filtre de sécurité |
candidatesTokenCount |
0 |
Aucune sortie générée (non facturé) |
thoughtsTokenCount |
293 |
Le modèle a fini son raisonnement mais a été intercepté |
promptTokenCount |
531 |
Contient 273 tokens de texte + 258 tokens d'image |
🎯 Observation clé : Le
thoughtsTokenCount: 293indique que le modèle a terminé son raisonnement interne (Thinking), mais qu'il a été bloqué par le filtre de sécurité lors de la phase finale de sortie. Cela signifie que le problème vient du résultat généré et non de l'invite de départ.

Mécanisme de filtrage de sécurité de Nano Banana Pro en détail
Le modèle Nano Banana Pro de Google utilise une architecture de filtrage de sécurité multicouche. Comprendre ce mécanisme est essentiel pour résoudre les problèmes de blocage.
Niveaux de filtrage de sécurité de Nano Banana Pro
| Couche de filtrage | Objet de détection | Configurable ? | Conséquences du déclenchement |
|---|---|---|---|
| Filtrage des entrées | Texte de l'invite | Partiellement | Demande rejetée |
| Filtrage des images en entrée | Contenu de l'image de référence | Non | IMAGE_SAFETY |
| Filtrage de génération | Résultat de sortie du modèle | Partiellement | IMAGE_SAFETY |
| Filtrage strict | CSAM (pédopornographie), PII (données personnelles), etc. | Non | Interception permanente |
Les quatre grandes catégories de risques de Nano Banana Pro
Google classe les risques liés au contenu en quatre catégories configurables :
| Catégorie | Nom anglais | Exemple de déclenchement | Seuil par défaut |
|---|---|---|---|
| Discours de haine | HARM_CATEGORY_HATE_SPEECH | Contenu discriminatoire (race, religion) | MEDIUM |
| Harcèlement | HARM_CATEGORY_HARASSMENT | Attaques personnelles, menaces | MEDIUM |
| Contenu sexuellement explicite | HARM_CATEGORY_SEXUALLY_EXPLICIT | Nudité, contenu pour adultes | MEDIUM |
| Contenu dangereux | HARM_CATEGORY_DANGEROUS_CONTENT | Violence, armes, drogues | MEDIUM |
Pourquoi du contenu normal est-il parfois bloqué ?
Google admet officiellement que les filtres de sécurité de Nano Banana Pro sont « bien plus prudents que prévu » (way more cautious than intended). Voici quelques scénarios courants de faux positifs :
| Scénario | Pourquoi le blocage ? | Risque réel |
|---|---|---|
| Lingerie e-commerce | Déclenche la détection de "contenu sexuel" | Présentation normale de produit |
| Personnages de style anime | Le style anime déclenche des détections plus strictes | Création artistique |
| Contenu lié aux enfants | Le tag "underage" déclenche le plus haut niveau de filtrage | Scène familiale normale |
| Planches d'anatomie médicale | Déclenche la détection de "violence/sang" | Usage éducatif |
| Professions spécifiques | Peut être identifié comme une "personne identifiable" | Description de métier générique |
⚠️ Note importante : Les images de style anime/manga ont une probabilité nettement plus élevée de déclencher les filtres de sécurité que le style réaliste. Pour un même contenu (ex: "un chat qui se repose"), l'utilisation de "anime style" peut être rejetée, alors que "realistic digital illustration" passera sans problème.
Solution IMAGE_SAFETY pour Nano Banana Pro n°1 : Réécriture de l'invite
La méthode la plus directe et efficace consiste à reformuler votre invite pour éviter les mots sensibles qui déclenchent les filtres de sécurité.
Stratégies de réécriture d'invites pour Nano Banana Pro
| Formulation originale | Problème | Suggestion de réécriture |
|---|---|---|
| "sexy model wearing bikini" | Déclenche la détection sexuelle | "fashion model in summer beachwear" |
| "anime girl" | Risque élevé avec le combo anime + femme | "illustrated character in digital art style" |
| "child playing" | "child" déclenche le filtrage maximal | "young person enjoying outdoor activities" |
| "bloody wound" | Déclenche la détection de violence | "medical illustration of skin injury" |
| "holding a gun" | Déclenche la détection de contenu dangereux | "action pose with prop equipment" |
Exemple de code pour la réécriture d'invites
import openai
import re
# Cartographie de remplacement des mots sensibles
SAFE_REPLACEMENTS = {
r'\bsexy\b': 'stylish',
r'\bbikini\b': 'summer beachwear',
r'\bchild\b': 'young person',
r'\bkid\b': 'young individual',
r'\banime\b': 'illustrated',
r'\bmanga\b': 'digital art',
r'\bgun\b': 'equipment',
r'\bweapon\b': 'tool',
r'\bblood\b': 'red liquid',
r'\bnude\b': 'unclothed figure',
}
def sanitize_prompt(prompt: str) -> str:
"""Remplace les termes sensibles pour réduire le risque d'interception"""
sanitized = prompt.lower()
for pattern, replacement in SAFE_REPLACEMENTS.items():
sanitized = re.sub(pattern, replacement, sanitized, flags=re.IGNORECASE)
return sanitized
client = openai.OpenAI(
api_key="VOTRE_CLÉ_API",
base_url="https://api.apiyi.com/v1" # Utilisation de l'interface unifiée APIYI
)
# Exemple d'utilisation
original_prompt = "anime girl in bikini at beach"
safe_prompt = sanitize_prompt(original_prompt)
# Résultat : "illustrated girl in summer beachwear at beach"
response = client.images.generate(
model="nano-banana-pro",
prompt=safe_prompt,
size="2048x2048"
)
💡 Conseil : Lorsque vous utilisez la plateforme APIYI (apiyi.com) pour appeler Nano Banana Pro, vous pouvez d'abord utiliser l'outil de test imagen.apiyi.com pour vérifier si votre invite déclenche un filtrage avant de procéder à l'appel définitif.
Solution IMAGE_SAFETY Nano Banana Pro n°2 : Changer de style artistique
Le style anime est un facteur à haut risque qui déclenche souvent le filtre IMAGE_SAFETY. Passer à un style réaliste peut considérablement augmenter votre taux de réussite.
Comparaison de la sécurité par style sur Nano Banana Pro
| Type de style | Sensibilité du filtre de sécurité | Indice de recommandation | Scénario d'utilisation |
|---|---|---|---|
| Anime/Manga | Très élevée | ⭐ | Non recommandé |
| Cartoon | Élevée | ⭐⭐ | À utiliser avec prudence |
| Digital Art | Moyenne | ⭐⭐⭐ | Utilisable |
| Realistic | Faible | ⭐⭐⭐⭐ | Recommandé |
| Photography | Minimale | ⭐⭐⭐⭐⭐ | Fortement recommandé |
Exemple de code pour le changement de style
def generate_with_safe_style(prompt: str, preferred_style: str = "anime"):
"""Convertit automatiquement les styles à haut risque en styles sûrs"""
# Table de correspondance des styles
style_mappings = {
"anime": "digital illustration with soft lighting",
"manga": "stylized digital artwork",
"cartoon": "clean vector illustration",
"hentai": None, # Complètement non supporté
}
# Vérification de la nécessité d'une conversion de style
safe_style = style_mappings.get(preferred_style.lower())
if safe_style is None:
raise ValueError(f"Style '{preferred_style}' is not supported")
# Construction de l'invite sécurisée
safe_prompt = f"{prompt}, {safe_style}, professional quality"
return client.images.generate(
model="nano-banana-pro",
prompt=safe_prompt,
size="2048x2048"
)
Solution IMAGE_SAFETY Nano Banana Pro n°3 : Ajuster les paramètres du seuil de sécurité
Google propose des paramètres de seuil de sécurité configurables, permettant de relâcher les restrictions de filtrage dans une certaine mesure.
Configuration du seuil de sécurité Nano Banana Pro
| Niveau de seuil | Valeur du paramètre | Sévérité du filtrage | Scénario d'utilisation |
|---|---|---|---|
| Le plus strict | BLOCK_LOW_AND_ABOVE |
Haute | Applications destinées aux mineurs |
| Standard (par défaut) | BLOCK_MEDIUM_AND_ABOVE |
Moyenne | Scénarios généraux |
| Souple | BLOCK_ONLY_HIGH |
Basse | Création professionnelle/artistique |
| Le plus souple | BLOCK_NONE |
Minimale | Nécessite une demande d'autorisation |
Code d'ajustement du seuil de sécurité
import openai
client = openai.OpenAI(
api_key="YOUR_API_KEY",
base_url="https://api.apiyi.com/v1" # Interface unifiée APIYI
)
# Utilisation d'une invite pour générer une image
response = client.images.generate(
model="nano-banana-pro",
prompt="fashion model in elegant evening dress",
size="2048x2048",
extra_body={
"safety_settings": [
{
"category": "HARM_CATEGORY_SEXUALLY_EXPLICIT",
"threshold": "BLOCK_ONLY_HIGH"
},
{
"category": "HARM_CATEGORY_DANGEROUS_CONTENT",
"threshold": "BLOCK_ONLY_HIGH"
},
{
"category": "HARM_CATEGORY_HARASSMENT",
"threshold": "BLOCK_ONLY_HIGH"
},
{
"category": "HARM_CATEGORY_HATE_SPEECH",
"threshold": "BLOCK_ONLY_HIGH"
}
]
}
)
⚠️ Note : Même en réglant tous les seuils configurables sur
BLOCK_NONE, certains filtrages stricts ne peuvent être contournés, notamment ceux concernant le CSAM (matériel d'abus sexuel sur mineur) et les PII (informations personnelles identifiables).

Solution 4 pour Nano Banana Pro IMAGE_SAFETY : Génération par étapes de scènes complexes
Des invites complexes sont plus susceptibles de déclencher les filtres de sécurité. Décomposer une scène complexe en plusieurs étapes simples peut augmenter le taux de réussite.
Stratégie de génération par étapes
def generate_complex_scene_stepwise(scene_description: str):
"""
Génère une scène complexe en la décomposant en plusieurs étapes.
Stratégie : générer d'abord l'arrière-plan, puis le sujet principal, et enfin synthétiser le tout.
"""
steps = [
# Étape 1 : Générer un arrière-plan vide
{
"prompt": "empty beach scene at sunset, golden hour lighting, no people",
"purpose": "background"
},
# Étape 2 : Générer le sujet (en utilisant une description sécurisée)
{
"prompt": "professional fashion photography, model in summer dress, studio lighting",
"purpose": "subject"
}
]
results = []
for step in steps:
try:
response = client.images.generate(
model="nano-banana-pro",
prompt=step["prompt"],
size="2048x2048"
)
results.append({
"purpose": step["purpose"],
"success": True,
"image": response.data[0]
})
except Exception as e:
results.append({
"purpose": step["purpose"],
"success": False,
"error": str(e)
})
return results
Solution 5 pour Nano Banana Pro IMAGE_SAFETY : Utiliser le mode d'édition d'image
Si la génération directe est bloquée, vous pouvez essayer d'utiliser le mode d'édition d'image (Image Editing) pour effectuer des modifications basées sur une image sécurisée existante.
Exemple de mode d'édition d'image
import base64
from pathlib import Path
def edit_existing_image(
image_path: str,
edit_instruction: str
) -> dict:
"""
Utilise le mode d'édition d'image pour modifier une image existante.
C'est généralement plus facile à faire passer à travers les filtres de sécurité qu'une génération à partir de zéro.
"""
# Lecture et encodage de l'image
image_data = Path(image_path).read_bytes()
base64_image = base64.b64encode(image_data).decode('utf-8')
response = client.images.edit(
model="nano-banana-pro",
image=base64_image,
prompt=edit_instruction,
size="2048x2048"
)
return response
# Exemple d'utilisation : changer la couleur d'un vêtement
result = edit_existing_image(
image_path="original_product.png",
edit_instruction="change the dress color to deep blue, keep everything else the same"
)
🎯 Astuce : En mode édition d'image, le modèle effectue des modifications locales basées sur l'image originale, ce qui réduit généralement la probabilité de déclencher les filtres de sécurité par rapport à une génération ex nihilo. Cette fonctionnalité d'édition d'image est également disponible lors de l'appel via la plateforme APIYI (apiyi.com).
Nano Banana Pro IMAGE_SAFETY Solution 6 : Ajouter un contexte de sécurité
Ajouter explicitement des termes comme « sécurité », « professionnel » ou « commercial » dans vos invites aide le modèle à comprendre que votre intention est tout à fait légitime.
Glossaire du contexte de sécurité
| Catégorie | Termes recommandés | Effet |
|---|---|---|
| Déclaration d'usage | "for commercial use", "product catalog" | Indique un usage commercial |
| Déclaration professionnelle | "professional photography", "studio shot" | Met l'accent sur le professionnalisme |
| Déclaration de style | "clean", "family-friendly", "SFW" | Clarifie l'intention de sécurité |
| Déclaration de qualité | "high quality", "editorial", "magazine" | Suggère des canaux de diffusion officiels |
Exemple de code pour ajouter un contexte de sécurité
def add_safety_context(prompt: str, context_type: str = "commercial") -> str:
"""Ajoute un contexte de sécurité à l'invite pour réduire la probabilité de faux positifs"""
context_templates = {
"commercial": "Professional product photography for e-commerce catalog, clean background, {prompt}, high quality commercial image",
"editorial": "Editorial photography for fashion magazine, {prompt}, professional studio lighting, tasteful and elegant",
"artistic": "Fine art digital illustration, {prompt}, museum quality, suitable for all ages",
"medical": "Medical educational illustration, {prompt}, anatomically accurate, clinical documentation style"
}
template = context_templates.get(context_type, context_templates["commercial"])
return template.format(prompt=prompt)
# Exemple d'utilisation
original = "model wearing swimwear"
safe_prompt = add_safety_context(original, "commercial")
# Résultat : "Professional product photography for e-commerce catalog, clean background, model wearing swimwear, high quality commercial image"
Nano Banana Pro IMAGE_SAFETY Solution 7 : Implémenter un mécanisme de retry intelligent
Comme le filtrage de sécurité comporte une part d'aléatoire, la mise en œuvre d'un mécanisme de nouvelle tentative (retry) intelligent peut augmenter considérablement votre taux de réussite global.
Stratégie de retry intelligent
import time
import random
from typing import Optional, List
class SafeImageGenerator:
"""Générateur d'images sécurisé avec retry intelligent"""
def __init__(self, api_key: str):
self.client = openai.OpenAI(
api_key=api_key,
base_url="https://api.apiyi.com/v1" # Interface unifiée APIYI
)
self.prompt_variations = []
def generate_prompt_variations(self, original: str) -> List[str]:
"""Génère des variantes de l'invite pour les tentatives de retry"""
variations = [
original,
f"Professional {original}",
f"{original}, clean and tasteful",
f"High quality {original}, suitable for all audiences",
f"Editorial style {original}, magazine quality"
]
return variations
def generate_with_retry(
self,
prompt: str,
max_retries: int = 3,
size: str = "2048x2048"
) -> Optional[dict]:
"""Génération d'image avec retry intelligent"""
variations = self.generate_prompt_variations(prompt)
for attempt, current_prompt in enumerate(variations[:max_retries]):
try:
print(f"Tentative {attempt + 1}/{max_retries} : {current_prompt[:50]}...")
response = self.client.images.generate(
model="nano-banana-pro",
prompt=current_prompt,
size=size
)
print(f"✅ Génération réussie !")
return {
"success": True,
"attempt": attempt + 1,
"prompt_used": current_prompt,
"image": response.data[0]
}
except Exception as e:
error_msg = str(e)
if "IMAGE_SAFETY" in error_msg or "PROHIBITED_CONTENT" in error_msg:
print(f"❌ Bloqué par le filtre de sécurité, essai de la variante suivante...")
time.sleep(1) # Évite les requêtes trop fréquentes
continue
else:
raise e
return {
"success": False,
"attempts": max_retries,
"error": "Toutes les variantes de l'invite ont été bloquées par le filtre de sécurité"
}
# Exemple d'utilisation
generator = SafeImageGenerator(api_key="votre-cle-api")
result = generator.generate_with_retry("fashion model in elegant dress")
if result["success"]:
print(f"Succès à la tentative n°{result['attempt']}")
else:
print(f"Échec après {result['attempts']} tentatives")
Solution 8 pour IMAGE_SAFETY Nano Banana Pro : choisir le bon fournisseur d'API
Différents fournisseurs d'API peuvent adopter des stratégies de filtrage de sécurité différentes. Il est essentiel de choisir celui qui correspond le mieux à votre scénario d'utilisation.
Comparatif des fournisseurs d'API pour Nano Banana Pro
| Fournisseur | Niveau de filtrage | Configurabilité | Prix | Caractéristiques |
|---|---|---|---|---|
| Google Officiel | Le plus strict | Limitée | 0,134 $/image | Paramètres par défaut les plus conservateurs |
| APIYI | Standard | Ajustement supporté | 0,05 $/image | Équilibre entre sécurité et utilisabilité |
| Autres intermédiaires | Inconstant | Inconnue | Variable | Qualité inégale |
💰 Optimisation des coûts : En utilisant Nano Banana Pro via APIYI (apiyi.com), non seulement le prix ne représente que 37 % du tarif officiel, mais vous bénéficiez également d'une configuration plus flexible des seuils de sécurité. Les requêtes bloquées par erreur ne sont pas facturées, ce qui vous permet de tester différentes stratégies d'invites en toute sérénité.
Cliquez pour afficher le code complet pour l’environnement de production
"""
Nano Banana Pro IMAGE_SAFETY 完整解决方案
集成所有优化策略的生产环境代码
"""
import openai
import re
import time
from typing import Optional, Dict, List
from dataclasses import dataclass
@dataclass
class GenerationResult:
success: bool
image_data: Optional[str] = None
prompt_used: Optional[str] = None
attempts: int = 0
error: Optional[str] = None
class RobustImageGenerator:
"""
健壮的 Nano Banana Pro 图像生成器
集成多种 IMAGE_SAFETY 绕过策略
"""
# 敏感词替换映射
SENSITIVE_WORDS = {
r'\bsexy\b': 'elegant',
r'\bhot\b': 'attractive',
r'\bbikini\b': 'swimwear',
r'\blingerie\b': 'intimate apparel',
r'\bchild\b': 'young person',
r'\bkid\b': 'young individual',
r'\bgirl\b': 'young woman',
r'\bboy\b': 'young man',
r'\banime\b': 'illustrated',
r'\bmanga\b': 'digital art',
r'\bhentai\b': 'artwork',
r'\bgun\b': 'equipment',
r'\bweapon\b': 'tool',
r'\bknife\b': 'utensil',
r'\bblood\b': 'red fluid',
r'\bviolent\b': 'dynamic',
r'\bnude\b': 'unclothed',
r'\bnaked\b': 'without clothing',
}
# 安全上下文模板
SAFETY_CONTEXTS = [
"", # 原始
"Professional photography, ",
"High quality commercial image, ",
"Editorial style, tasteful, ",
"Clean and family-friendly, ",
]
def __init__(self, api_key: str, base_url: str = "https://api.apiyi.com/v1"):
self.client = openai.OpenAI(
api_key=api_key,
base_url=base_url
)
def sanitize_prompt(self, prompt: str) -> str:
"""替换敏感词汇"""
sanitized = prompt
for pattern, replacement in self.SENSITIVE_WORDS.items():
sanitized = re.sub(pattern, replacement, sanitized, flags=re.IGNORECASE)
return sanitized
def generate_variations(self, prompt: str) -> List[str]:
"""生成提示词变体"""
sanitized = self.sanitize_prompt(prompt)
variations = []
for context in self.SAFETY_CONTEXTS:
variations.append(f"{context}{sanitized}")
return variations
def generate(
self,
prompt: str,
size: str = "2048x2048",
max_retries: int = 5,
safety_threshold: str = "BLOCK_MEDIUM_AND_ABOVE"
) -> GenerationResult:
"""
生成图像,带完整的 IMAGE_SAFETY 处理
Args:
prompt: 原始提示词
size: 图像尺寸
max_retries: 最大重试次数
safety_threshold: 安全阈值
Returns:
GenerationResult 对象
"""
variations = self.generate_variations(prompt)
attempts = 0
for variation in variations[:max_retries]:
attempts += 1
try:
response = self.client.images.generate(
model="nano-banana-pro",
prompt=variation,
size=size,
extra_body={
"safety_settings": [
{"category": cat, "threshold": safety_threshold}
for cat in [
"HARM_CATEGORY_SEXUALLY_EXPLICIT",
"HARM_CATEGORY_DANGEROUS_CONTENT",
"HARM_CATEGORY_HARASSMENT",
"HARM_CATEGORY_HATE_SPEECH"
]
]
}
)
return GenerationResult(
success=True,
image_data=response.data[0].b64_json,
prompt_used=variation,
attempts=attempts
)
except Exception as e:
error_msg = str(e)
if any(keyword in error_msg for keyword in
["IMAGE_SAFETY", "PROHIBITED_CONTENT", "SAFETY"]):
time.sleep(0.5)
continue
else:
return GenerationResult(
success=False,
attempts=attempts,
error=error_msg
)
return GenerationResult(
success=False,
attempts=attempts,
error="All variations blocked by safety filter"
)
# 使用示例
if __name__ == "__main__":
generator = RobustImageGenerator(api_key="your-api-key")
# 测试案例
test_prompts = [
"anime girl in bikini", # 高风险
"child playing in park", # 中风险
"fashion model in elegant dress", # 低风险
]
for prompt in test_prompts:
print(f"\n测试: {prompt}")
result = generator.generate(prompt)
if result.success:
print(f" ✅ 成功 (尝试 {result.attempts} 次)")
print(f" 使用的提示词: {result.prompt_used[:60]}...")
else:
print(f" ❌ 失败: {result.error}")
FAQ sur IMAGE_SAFETY pour Nano Banana Pro
Q1 : Pourquoi mes photos de produits normales déclenchent-elles IMAGE_SAFETY ?
Le filtre de sécurité de Google adopte une stratégie conservatrice de type "mieux vaut prévenir que guérir". Les types de produits suivants sont souvent sujets à des faux positifs :
- Lingerie et maillots de bain : Même des photos e-commerce classiques peuvent déclencher la détection de contenu sexuel.
- Produits liés au corps humain : Comme les masseurs ou les appareils de beauté en contact avec la peau.
- Articles pour enfants : Tout contenu impliquant des enfants déclenche le filtrage le plus strict.
Solution : Ajoutez un contexte commercial explicite, tel que "e-commerce product photo" ou "catalog image", et assurez-vous que l'arrière-plan de l'image est épuré. Testez différentes combinaisons d'invites sur la plateforme APIYI (apiyi.com) pour trouver la meilleure approche.
Q2 : Pourquoi suis-je toujours bloqué après avoir réglé sur BLOCK_NONE ?
Même en réglant tous les seuils de sécurité configurables sur BLOCK_NONE, il existe des filtres stricts incontournables :
| Type de filtrage | Configurable | Description |
|---|---|---|
| 4 catégories de risques majeures | ✅ | Ajustable via safety_settings |
| Détection CSAM | ❌ | Jamais configurable |
| Détection PII (Données personnelles) | ❌ | Jamais configurable |
| Détection de copyright | ❌ | Célébrités, marques, etc. |
Si votre contenu ne concerne pas ces catégories de filtrage strict, essayez de reformuler votre invite ou de changer de style artistique.
Q3 : Les requêtes bloquées sont-elles facturées ?
Selon la documentation officielle de Google, les images bloquées par le filtre de sécurité ne sont pas facturées. Comme vous pouvez le voir dans la réponse reçue, candidatesTokenCount: 0 indique qu'aucune sortie n'a été générée, il n'y a donc pas de frais.
Cependant, notez que thoughtsTokenCount: 293 indique que le modèle a effectué un raisonnement interne. Dans certains modes de facturation, les "tokens de pensée" pourraient être comptabilisés. Lors d'un appel via la plateforme APIYI, les requêtes bloquées ne sont absolument pas facturées, vous pouvez donc multiplier les essais sans crainte.
Q4 : Comment savoir s’il s’agit d’un problème d’entrée (input) ou de sortie (output) ?
Vous pouvez en juger d'après la réponse d'erreur :
| Caractéristique | Problème d'entrée | Problème de sortie |
|---|---|---|
promptTokenCount |
Peut être à 0 | Compte normal |
thoughtsTokenCount |
0 | Valeur présente (ex: 293) |
| Type d'erreur | BLOCKED_PROMPT | IMAGE_SAFETY |
Dans votre cas, thoughtsTokenCount: 293 montre que le blocage a eu lieu lors de la phase de sortie : le modèle a terminé son raisonnement, mais l'image générée a déclenché le filtre. La solution consiste à ajuster l'invite pour guider le modèle vers la génération d'un contenu plus sûr.
Résumé des solutions IMAGE_SAFETY pour Nano Banana Pro
Cet article présente 8 méthodes pour résoudre les erreurs IMAGE_SAFETY de Nano Banana Pro :
| Solution | Scénario idéal | Difficulté | Efficacité |
|---|---|---|---|
| Réécriture de l'invite | Tous scénarios | Faible | ⭐⭐⭐⭐⭐ |
| Changer de style artistique | Besoins Anime/Illustration | Faible | ⭐⭐⭐⭐ |
| Ajuster les seuils de sécurité | Accès aux paramètres API | Moyenne | ⭐⭐⭐⭐ |
| Génération par étapes | Scènes complexes | Moyenne | ⭐⭐⭐ |
| Mode édition d'image | Modif. via image existante | Moyenne | ⭐⭐⭐⭐ |
| Ajouter un contexte sécu. | Scénarios pro/commerciaux | Faible | ⭐⭐⭐⭐ |
| Répétition intelligente | Environnement de prod | Élevée | ⭐⭐⭐⭐⭐ |
| Choisir le bon fournisseur | Utilisation long terme | Faible | ⭐⭐⭐⭐ |
Conseil clé : En combinant les stratégies "Réécriture de l'invite + Contexte de sécurité + Répétition intelligente", vous pouvez faire passer votre taux de réussite de 60 % à plus de 95 %.
🎯 Recommandation finale : Nous vous conseillons d'utiliser APIYI (apiyi.com) pour vos appels Nano Banana Pro. La plateforme offre des options de configuration de sécurité plus flexibles, les requêtes bloquées par les filtres ne sont pas facturées, et le tarif de 0,05 $/image réduit considérablement vos coûts de débogage. L'outil de test en ligne imagen.apiyi.com vous permet de vérifier rapidement si vos invites déclenchent le filtrage.
Cet article a été rédigé par l'équipe technique d'APIYI. Pour plus d'astuces sur l'utilisation des API de génération d'images par IA, n'hésitez pas à visiter apiyi.com.
