Gerar imagens com o Gemini

O Gemini 2.0 Flash oferece suporte à geração de respostas em várias modalidades, incluindo texto e imagens.

Geração de imagens

O pré-lançamento público do Gemini 2.0 Flash para geração de imagens (gemini-2.0-flash-preview-image-generation) permite gerar imagens além de texto. Isso amplia os recursos do Gemini para incluir o seguinte:

  • Gere imagens de forma iterativa por conversa em linguagem natural, ajustando as imagens e mantendo a consistência e o contexto.
  • Gerar imagens com renderização de texto longo de alta qualidade.
  • Gere uma saída de texto e imagem intercalada. Por exemplo, uma postagem de blog com texto e imagens em uma única interação. Antes, isso exigia a junção de vários modelos.
  • Gere imagens usando o conhecimento de mundo e os recursos de raciocínio do Gemini.

Com essa versão experimental pública, o Gemini 2.0 Flash pode gerar imagens em 1024 px, permite gerar e editar imagens de pessoas e contém filtros de segurança atualizados que proporcionam uma experiência do usuário mais flexível e menos restritiva.

Ele é compatível com as seguintes modalidades e recursos:

  • Texto para imagem

    • Exemplo de comando: "Gere uma imagem da Torre Eiffel com fogos de artifício ao fundo".
  • Texto para imagem (renderização de texto)

    • Exemplo de comando: "gere uma foto cinematográfica de um grande edifício com esta projeção de texto gigante mapeada na frente do edifício: "O Gemini 2.0 agora pode gerar textos longos""
  • Texto para imagens e texto (intercalado)

    • Exemplo de comando: "Gere uma receita ilustrada de paella. Crie imagens ao lado do texto enquanto gera a receita".
    • Exemplo de comando: "Gere uma história sobre um cachorro em um estilo de animação de desenho animado em 3D. Para cada cena, gere uma imagem"
  • Imagens e texto para imagens e texto (intercalados)

    • Comando de exemplo: (com uma imagem de um quarto mobiliado) "Que outras cores de sofás ficariam boas no meu espaço? Você pode atualizar a imagem?"
  • Edição de imagens (texto e imagem para imagem)

    • Exemplo de comando: "Edite esta imagem para que ela pareça um desenho animado"
    • Exemplo de comando: [imagem de um gato] + [imagem de um travesseiro] + "Crie um ponto cruz do meu gato neste travesseiro".
  • Edição de imagens com várias interações (chat)

    • Exemplos de comandos: [faça upload de uma imagem de um carro azul.] "Transforme este carro em um conversível." "Agora mude a cor para amarelo."

Limitações:

  • Para ter o melhor desempenho, use os seguintes idiomas: EN, es-MX, ja-JP, zh-CN, hi-IN.
  • A geração de imagens não aceita entradas de áudio ou vídeo.
  • A geração de imagens nem sempre é acionada:
    • O modelo pode gerar apenas texto. Peça imagens explicitamente. Por exemplo, "forneça imagens à medida que avança".
    • O modelo pode gerar texto como uma imagem. Tente pedir explicitamente saídas de texto. Por exemplo, "gere texto narrativo com ilustrações".
    • O modelo pode parar de gerar no meio da resposta. Tente de novo ou use outro comando.

Gerar imagens

As seções a seguir mostram como gerar imagens usando o Vertex AI Studio ou a API.

Para orientações e práticas recomendadas sobre comandos, consulte Criar comandos multimodais.

Console

Para usar a geração de imagens:

  1. Abra Vertex AI Studio > Criar comando.
  2. Clique em Trocar modelo e selecione gemini-2.0-flash-preview-image-generation no menu.
  3. No painel Saídas, selecione Imagem e texto no menu suspenso.
  4. Escreva uma descrição da imagem que você quer gerar na área de texto Escreva um comando.
  5. Clique no botão Comando ().

O Gemini vai gerar uma imagem com base na sua descrição. Esse processo leva alguns segundos, mas pode ser comparativamente mais lento dependendo da capacidade.

Python

Instalar

pip install --upgrade google-genai

Para saber mais, consulte a documentação de referência do SDK.

Defina variáveis de ambiente para usar o SDK de IA generativa com a 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

Execute o comando a seguir no terminal para criar ou substituir esse arquivo no diretório atual:

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

O Gemini vai gerar uma imagem com base na sua descrição. Esse processo leva alguns segundos, mas pode ser comparativamente mais lento dependendo da capacidade.

Editar uma imagem

Console

Para editar imagens:

  1. Abra Vertex AI Studio > Criar comando.
  2. Clique em Trocar modelo e selecione gemini-2.0-flash-preview-image-generation no menu.
  3. No painel Saídas, selecione Imagem e texto no menu suspenso.
  4. Clique em Inserir mídia () e selecione uma origem no menu. Depois, siga as instruções da caixa de diálogo.
  5. Escreva as edições que você quer fazer na imagem na área de texto Escreva um comando.
  6. Clique no botão Comando ().

O Gemini vai gerar uma versão editada da imagem fornecida com base na sua descrição. Esse processo leva alguns segundos, mas pode ser mais lento dependendo da capacidade.

Python

Instalar

pip install --upgrade google-genai

Para saber mais, consulte a documentação de referência do SDK.

Defina variáveis de ambiente para usar o SDK de IA generativa com a 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

Execute o comando a seguir no terminal para criar ou substituir esse arquivo no diretório atual:

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

O Gemini vai gerar uma imagem com base na sua descrição. Esse processo leva alguns segundos, mas pode ser comparativamente mais lento dependendo da capacidade.

Gerar resposta com textos e imagens

O Gemini 2.0 Flash pode gerar imagens intercaladas com respostas de texto. Por exemplo, você pode gerar imagens de como cada etapa de uma receita gerada pode ser para acompanhar o texto dessa etapa, sem precisar fazer solicitações separadas ao modelo para isso.

Console

Para gerar imagens intercaladas com respostas de texto:

  1. Abra Vertex AI Studio > Criar comando.
  2. Clique em Trocar modelo e selecione gemini-2.0-flash-preview-image-generation no menu.
  3. No painel Saídas, selecione Imagem e texto no menu suspenso.
  4. Escreva uma descrição da imagem que você quer gerar na área de texto Escreva um comando. Por exemplo, "Crie um tutorial explicando como fazer um sanduíche de pasta de amendoim e geleia em três etapas simples. Para cada etapa, forneça um título com o número da etapa, uma explicação e também gere uma imagem, cada uma em uma proporção de 1:1."
  5. Clique no botão Comando ().

O Gemini vai gerar uma resposta com base na sua descrição. Esse processo leva alguns segundos, mas pode ser comparativamente mais lento dependendo da capacidade.

Python

Instalar

pip install --upgrade google-genai

Para saber mais, consulte a documentação de referência do SDK.

Defina variáveis de ambiente para usar o SDK de IA generativa com a 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

Execute o comando a seguir no terminal para criar ou substituir esse arquivo no diretório atual:

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

O Gemini vai gerar uma imagem com base na sua descrição. Esse processo leva alguns segundos, mas pode ser comparativamente mais lento dependendo da capacidade.