Générer des images avec Gemini

Gemini 2.0 Flash permet de générer des réponses dans plusieurs modalités, y compris du texte et des images.

Génération d'images

La version Preview publique de Gemini 2.0 Flash pour la génération d'images (gemini-2.0-flash-preview-image-generation) permet de générer des images en plus du texte. Les capacités de Gemini sont ainsi étendues pour inclure les éléments suivants :

  • Générez des images de manière itérative en conversant en langage naturel, et ajustez-les tout en conservant la cohérence et le contexte.
  • Générez des images avec un rendu de texte long de haute qualité.
  • Générez du texte et des images entrelacés. Par exemple, un article de blog avec du texte et des images en un seul tour. Auparavant, cela nécessitait d'enchaîner plusieurs modèles.
  • Générez des images à l'aide des connaissances du monde et des capacités de raisonnement de Gemini.

Avec cette version expérimentale publique, Gemini 2.0 Flash peut générer des images en 1 024 px, permet de générer et de modifier des images de personnes, et contient des filtres de sécurité mis à jour qui offrent une expérience utilisateur plus flexible et moins restrictive.

Il est compatible avec les modalités et les fonctionnalités suivantes :

  • Texte vers image

    • Exemple de requête : "Génère une image de la tour Eiffel avec des feux d'artifice en arrière-plan."
  • Texte vers image (rendu de texte)

    • Exemple de requête : "génère une photo cinématographique d'un grand bâtiment avec cette projection de texte géante sur la façade : "Gemini 2.0 peut désormais générer du texte long""
  • Texte vers image(s) et texte (entrelacé)

    • Exemple de requête : "Génère une recette illustrée de paella. Crée des images à côté du texte lorsque tu génères la recette."
    • Exemple de requête : "Génère une histoire sur un chien dans un style d'animation cartoon 3D. Pour chaque scène, génère une image."
  • Image(s) et texte vers image(s) et texte (entrelacés)

    • Exemple de requête : (avec l'image d'une pièce meublée) "Quelles autres couleurs de canapé conviendraient à mon espace ? Peux-tu modifier l'image ?"
  • Retouche d'images (texte vers image et image vers image)

    • Exemple de requête : "Modifie cette image pour qu'elle ressemble à un dessin animé"
    • Exemple de requête : [image de chat] + [image d'oreiller] + "Crée un point de croix de mon chat sur cet oreiller."
  • Édition d'images multitours (chat)

    • Exemples de requêtes : [importe une image d'une voiture bleue.] "Transforme cette voiture en cabriolet." "Maintenant, change la couleur en jaune."

Limites :

  • Pour des performances optimales, utilisez les langues suivantes : EN, es-MX, ja-JP, zh-CN, hi-IN.
  • La génération d'images n'est pas compatible avec les entrées audio ou vidéo.
  • La génération d'images ne se déclenche pas toujours :
    • Le modèle ne peut générer que du texte. Essayez de demander explicitement des images. Par exemple, "fournis des images au fur et à mesure".
    • Le modèle peut générer du texte sous forme d'image. Essayez de demander explicitement des résultats textuels. Par exemple, "génère un texte narratif avec des illustrations".
    • Le modèle peut s'arrêter de générer du contenu en cours de route. Réessayez ou saisissez une autre requête.

Générer des images

Les sections suivantes expliquent comment générer des images à l'aide de Vertex AI Studio ou de l'API.

Pour obtenir des conseils et connaître les bonnes pratiques concernant les requêtes, consultez Concevoir des requêtes multimodales.

Console

Pour utiliser la génération d'images :

  1. Ouvrez Vertex AI Studio > Créer une requête.
  2. Cliquez sur Changer de modèle, puis sélectionnez gemini-2.0-flash-preview-image-generation dans le menu.
  3. Dans le panneau Sorties, sélectionnez Image et texte dans le menu déroulant.
  4. Dans la zone de texte Écrivez une requête, décrivez l'image que vous souhaitez générer.
  5. Cliquez sur le bouton Requête ().

Gemini génère une image en fonction de votre description. Ce processus devrait prendre quelques secondes, mais peut être relativement plus lent en fonction de la capacité.

Python

Installer

pip install --upgrade google-genai

Pour en savoir plus, lisez la documentation de référence du SDK.

Définissez les variables d'environnement pour utiliser le SDK Gen AI avec Vertex AI :

# Replace the `GOOGLE_CLOUD_PROJECT` and `GOOGLE_CLOUD_LOCATION` values
# with appropriate values for your project.
export GOOGLE_CLOUD_PROJECT=GOOGLE_CLOUD_PROJECT
export GOOGLE_CLOUD_LOCATION=global
export GOOGLE_GENAI_USE_VERTEXAI=True

from google import genai
from google.genai.types import GenerateContentConfig, Modality
from PIL import Image
from io import BytesIO

client = genai.Client()

response = client.models.generate_content(
    model="gemini-2.0-flash-preview-image-generation",
    contents=(
        "Generate an image of the Eiffel tower with fireworks in the background."
    ),
    config=GenerateContentConfig(response_modalities=[Modality.TEXT, Modality.IMAGE]),
)
for part in response.candidates[0].content.parts:
    if part.text:
        print(part.text)
    elif part.inline_data:
        image = Image.open(BytesIO((part.inline_data.data)))
        image.save("example-image.png")
# Example response:
#   A beautiful photograph captures the iconic Eiffel Tower in Paris, France,
#   against a backdrop of a vibrant and dynamic fireworks display. The tower itself...

REST

Exécutez la commande suivante dans le terminal pour créer ou écraser ce fichier dans le répertoire actuel :

curl -X POST \
  -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  -H "Content-Type: application/json" \
  https://${API_ENDPOINT}:generateContent \
  -d '{
    "contents": {
      "role": "USER",
      "parts": { "text": "Create a tutorial explaining how to make a peanut butter and jelly sandwich in three easy steps."},
    },
    "generation_config": {
      "response_modalities": ["TEXT", "IMAGE"],
     },
     "safetySettings": {
      "method": "PROBABILITY",
      "category": "HARM_CATEGORY_DANGEROUS_CONTENT",
      "threshold": "BLOCK_MEDIUM_AND_ABOVE"
    },
  }' 2>/dev/null >response.json

Gemini génère une image en fonction de votre description. Ce processus devrait prendre quelques secondes, mais peut être relativement plus lent en fonction de la capacité.

Modifier une image

Console

Pour modifier des images :

  1. Ouvrez Vertex AI Studio > Créer une requête.
  2. Cliquez sur Changer de modèle, puis sélectionnez gemini-2.0-flash-preview-image-generation dans le menu.
  3. Dans le panneau Sorties, sélectionnez Image et texte dans le menu déroulant.
  4. Cliquez sur Insérer un média (), sélectionnez une source dans le menu, puis suivez les instructions de la boîte de dialogue.
  5. Dans la zone de texte Écrivez une requête, décrivez les modifications que vous souhaitez apporter à l'image.
  6. Cliquez sur le bouton Requête ().

Gemini génère une version modifiée de l'image fournie en fonction de votre description. Ce processus devrait prendre quelques secondes, mais peut être relativement plus lent en fonction de la capacité.

Python

Installer

pip install --upgrade google-genai

Pour en savoir plus, lisez la documentation de référence du SDK.

Définissez les variables d'environnement pour utiliser le SDK Gen AI avec Vertex AI :

# Replace the `GOOGLE_CLOUD_PROJECT` and `GOOGLE_CLOUD_LOCATION` values
# with appropriate values for your project.
export GOOGLE_CLOUD_PROJECT=GOOGLE_CLOUD_PROJECT
export GOOGLE_CLOUD_LOCATION=global
export GOOGLE_GENAI_USE_VERTEXAI=True

from google import genai
from google.genai.types import GenerateContentConfig, Modality
from PIL import Image
from io import BytesIO

client = genai.Client()

# Using an image of Eiffel tower, with fireworks in the background.
image = Image.open("example-image.png")

response = client.models.generate_content(
    model="gemini-2.0-flash-exp",
    contents=[image, "Edit this image to make it look like a cartoon."],
    config=GenerateContentConfig(response_modalities=[Modality.TEXT, Modality.IMAGE]),
)
for part in response.candidates[0].content.parts:
    if part.text:
        print(part.text)
    elif part.inline_data:
        image = Image.open(BytesIO((part.inline_data.data)))
        image.save("bw-example-image.png")
# Example response:
#  Here's the cartoon-style edit of the image:
#  Cartoon-style edit:
#  - Simplified the Eiffel Tower with bolder lines and slightly exaggerated proportions.
#  - Brightened and saturated the colors of the sky, fireworks, and foliage for a more vibrant, cartoonish look.
#  ....

REST

Exécutez la commande suivante dans le terminal pour créer ou écraser ce fichier dans le répertoire actuel :

curl -X POST \
  -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  -H "Content-Type: application/json" \
  https://${API_ENDPOINT}:generateContent \
  -d '{
    "contents": {
      "role": "USER",
      "parts": [
        {"file_data": {
          "mime_type": "image/jpg",
          "file_uri": "<var>FILE_NAME</var>"
          }
        },
        {"text": "Convert this photo to black and white, in a cartoonish style."},
      ]

    },
    "generation_config": {
      "response_modalities": ["TEXT", "IMAGE"],
    },
    "safetySettings": {
      "method": "PROBABILITY",
      "category": "HARM_CATEGORY_DANGEROUS_CONTENT",
      "threshold": "BLOCK_MEDIUM_AND_ABOVE"
    },
  }' 2>/dev/null >response.json

Gemini génère une image en fonction de votre description. Ce processus devrait prendre quelques secondes, mais peut être relativement plus lent en fonction de la capacité.

Générer du texte entrecoupé d'images

Gemini 2.0 Flash peut générer des images intercalées avec ses réponses textuelles. Par exemple, vous pouvez générer des images de chaque étape d'une recette générée pour accompagner le texte de cette étape, sans avoir à envoyer de requêtes distinctes au modèle pour ce faire.

Console

Pour générer des images entrecoupées de réponses textuelles :

  1. Ouvrez Vertex AI Studio > Créer une requête.
  2. Cliquez sur Changer de modèle, puis sélectionnez gemini-2.0-flash-preview-image-generation dans le menu.
  3. Dans le panneau Sorties, sélectionnez Image et texte dans le menu déroulant.
  4. Dans la zone de texte Écrivez une requête, décrivez l'image que vous souhaitez générer. Par exemple, "Crée un tutoriel expliquant comment faire un sandwich au beurre de cacahuète et à la confiture en trois étapes simples. Pour chaque étape, indique un titre avec le numéro de l'étape, une explication et génère également une image au format 1:1."
  5. Cliquez sur le bouton Requête ().

Gemini générera une réponse en fonction de votre description. Ce processus devrait prendre quelques secondes, mais peut être relativement plus lent en fonction de la capacité.

Python

Installer

pip install --upgrade google-genai

Pour en savoir plus, lisez la documentation de référence du SDK.

Définissez les variables d'environnement pour utiliser le SDK Gen AI avec Vertex AI :

# Replace the `GOOGLE_CLOUD_PROJECT` and `GOOGLE_CLOUD_LOCATION` values
# with appropriate values for your project.
export GOOGLE_CLOUD_PROJECT=GOOGLE_CLOUD_PROJECT
export GOOGLE_CLOUD_LOCATION=global
export GOOGLE_GENAI_USE_VERTEXAI=True

from google import genai
from google.genai.types import GenerateContentConfig, Modality
from PIL import Image
from io import BytesIO

client = genai.Client()

response = client.models.generate_content(
    model="gemini-2.0-flash-exp",
    contents=(
        "Generate an illustrated recipe for a paella."
        "Create images to go alongside the text as you generate the recipe"
    ),
    config=GenerateContentConfig(response_modalities=[Modality.TEXT, Modality.IMAGE]),
)
with open("paella-recipe.md", "w") as fp:
    for i, part in enumerate(response.candidates[0].content.parts):
        if part.text is not None:
            fp.write(part.text)
        elif part.inline_data is not None:
            image = Image.open(BytesIO((part.inline_data.data)))
            image.save(f"example-image-{i+1}.png")
            fp.write(f"![image](./example-image-{i+1}.png)")
# Example response:
#  A markdown page for a Paella recipe(`paella-recipe.md`) has been generated.
#   It includes detailed steps and several images illustrating the cooking process.

REST

Exécutez la commande suivante dans le terminal pour créer ou écraser ce fichier dans le répertoire actuel :

curl -X POST \
  -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  -H "Content-Type: application/json" \
  https://${API_ENDPOINT}:generateContent \
  -d '{
    "contents": {
      "role": "USER",
      "parts": { "text": "Create a tutorial explaining how to make a peanut butter and jelly sandwich in three easy steps. For each step, provide a title with the number of the step, an explanation, and also generate an image, generate each image in a 1:1 aspect ratio."},
    },
    "generation_config": {
      "response_modalities": ["TEXT", "IMAGE"],
     },
     "safetySettings": {
      "method": "PROBABILITY",
      "category": "HARM_CATEGORY_DANGEROUS_CONTENT",
      "threshold": "BLOCK_MEDIUM_AND_ABOVE"
    },
  }' 2>/dev/null >response.json

Gemini génère une image en fonction de votre description. Ce processus devrait prendre quelques secondes, mais peut être relativement plus lent en fonction de la capacité.