使用 Gemini 生成图片

Gemini 2.0 Flash 支持多种模态的回答生成,包括文本和图片。

图片生成

Gemini 2.0 Flash 的图片生成功能 (gemini-2.0-flash-preview-image-generation) 公开预览版除了支持生成文本之外,还支持生成图片。这扩展了 Gemini 的功能,使其涵盖以下内容:

  • 通过自然语言对话迭代生成图片,调整图片的同时保持一致性和上下文。
  • 生成具有高质量长文本渲染的图片。
  • 生成交织的文本-图片输出。例如,单次转弯即可显示包含文字和图片的博文。以前,这需要将多个模型串联起来。
  • 使用 Gemini 的世界知识和推理能力生成图片。

在此次公开实验版中,Gemini 2.0 Flash 可以生成 1024 像素的图片,支持生成和编辑人物图片,并包含经过更新的安全过滤器,可提供更灵活、更宽松的用户体验。

它支持以下模态和功能:

  • 文本到图像

    • 示例提示:“生成一张背景为烟花的埃菲尔铁塔图片。”
  • 文本到图片(文本渲染)

    • 示例提示:“生成一张大楼的电影照片,并将以下巨型文字投影映射到大楼正面:‘Gemini 2.0 现在可以生成长篇幅文本’”
  • 文本转图片和文本(交织)

    • 示例问题:“生成一张带插图的西班牙海鲜饭食谱。在生成食谱时,一并创建图片。”
    • 示例提示:“以 3D 卡通动画风格生成一个关于狗狗的故事。For each scene, generate an image”(针对每个场景生成图片)
  • 图片和文本转图片和文本(交织)

    • 示例提示:(显示家具摆设的房间图片)“我的空间适合哪些其他颜色的沙发?Can you update the image?"
  • 图片编辑(文字和图片转图片)

    • 示例提示:“将此图片编辑成漫画风格”
    • 示例提示:[猫的图片] + [枕头的图片] +“在这个枕头上用十字绣制作我猫的图案。”
  • 多轮修图(聊天)

    • 示例提示:[上传一张蓝色汽车的图片。]“将这辆车改装成敞篷车。”“现在将颜色更改为黄色。”

限制:

  • 为获得最佳效果,请使用以下语言:英语、西班牙语(墨西哥)、日语、简体中文、印地语。
  • 图片生成功能不支持音频或视频输入。
  • 图片生成功能未必总会触发以下操作:
    • 模型可能只会输出文本。尝试明确请求图片输出。例如,“随时提供图片”。
    • 模型可能会以图片的形式生成文本。请尝试明确要求系统输出文本。例如,“生成插图和故事文本”。
    • 模型可能会在中途停止生成。请重试或尝试使用其他提示。

生成图片

以下部分介绍了如何使用 Vertex AI Studio 或 API 生成图片。

如需有关提示的准则和最佳实践,请参阅设计多模态提示

控制台

如需使用图片生成功能,请执行以下操作:

  1. 依次打开 Vertex AI Studio > 创建提示
  2. 点击切换模型,然后从菜单中选择 gemini-2.0-flash-preview-image-generation
  3. 输出面板中,从下拉菜单中选择图片和文字
  4. 编写提示文本区域的文本框中,编写要生成的图片的说明。
  5. 点击提示 () 按钮。

Gemini 会根据您的描述生成图片。此过程应该需要几秒钟的时间,但可能会相对较慢,具体取决于容量。

Gen AI SDK for Python

安装

pip install --upgrade google-genai

如需了解详情,请参阅 SDK 参考文档

设置环境变量以将 Gen AI SDK 与 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 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

在终端中运行以下命令,在当前目录中创建或覆盖此文件:

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 会根据您的描述生成图片。此过程应该需要几秒钟的时间,但可能相对较慢,具体取决于容量。

编辑图片

控制台

如需修改图片,请执行以下操作:

  1. 依次打开 Vertex AI Studio > 创建提示
  2. 点击切换模型,然后从菜单中选择 gemini-2.0-flash-preview-image-generation
  3. 输出面板中,从下拉菜单中选择图片和文字
  4. 点击插入媒体 (),从菜单中选择一个来源,然后按照对话框中的说明操作。
  5. 编写提示文本区域中,写下您要对图片进行的修改。
  6. 点击提示 () 按钮。

Gemini 会根据您的说明生成所提供图片的修改版。此过程应该需要几秒钟的时间,但可能会相对较慢,具体取决于容量。

Gen AI SDK for Python

安装

pip install --upgrade google-genai

如需了解详情,请参阅 SDK 参考文档

设置环境变量以将 Gen AI SDK 与 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

在终端中运行以下命令,在当前目录中创建或覆盖此文件:

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 会根据您的描述生成图片。此过程应该需要几秒钟的时间,但可能相对较慢,具体取决于容量。

生成图文交织的内容

Gemini 2.0 Flash 可以通过文本回答生成交错图片。例如,您可以生成生成的食谱的每个步骤可能的图片,以便与该步骤的文本搭配使用,而无需向模型发出单独的请求。

控制台

如需生成包含文本回答的图文交织图片,请执行以下操作:

  1. 依次打开 Vertex AI Studio > 创建提示
  2. 点击切换模型,然后从菜单中选择 gemini-2.0-flash-preview-image-generation
  3. 输出面板中,从下拉菜单中选择图片和文字
  4. 编写提示文本区域的文本框中,输入要生成的图片的说明。例如,“创建一个教程,介绍如何通过三个简单的步骤制作花生酱和果冻三明治。为每个步骤提供标题(包含步骤编号)、说明,并生成图片,每个图片的宽高比均为 1:1。”
  5. 点击提示 () 按钮。

Gemini 会根据您的说明生成回答。此过程应该需要几秒钟的时间,但可能相对较慢,具体取决于容量。

Gen AI SDK for Python

安装

pip install --upgrade google-genai

如需了解详情,请参阅 SDK 参考文档

设置环境变量以将 Gen AI SDK 与 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

在终端中运行以下命令,在当前目录中创建或覆盖此文件:

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 会根据您的描述生成图片。此过程应该需要几秒钟的时间,但可能相对较慢,具体取决于容量。