Google GenAI 图像
Gemini 2.5 Flash Image Model 和 Gemini 3.1 Flash Image Model 通过 Gemini Developer API 或 Vertex AI 使用 Google 的图像模型提供图像生成功能。
它们以主流价格提供低延迟的高画质图像生成及对话式编辑。
它是 Gemini 3 Pro Image Model 的高性能对应模型,专为高速和大批量的开发者使用场景进行了优化。
此实现提供两种身份验证模式:
- Gemini 开发者 API:使用 API 密钥进行快速原型开发和开发工作
- Vertex AI:使用 Google Cloud 凭据进行生产环境部署,并支持企业级功能
先决条件
选择以下身份验证方法之一:
选项 1:Gemini 开发者 API(API 密钥)
-
从 Google AI Studio 获取 API 密钥
-
将 API 密钥设置为环境变量或配置在应用程序属性中
选项 2:Vertex AI(Google Cloud)
-
安装适用于您的操作系统的 gcloud CLI。
-
运行以下命令进行身份验证。将
PROJECT_ID替换为您的 Google Cloud 项目 ID,将ACCOUNT替换为您的 Google Cloud 用户名。
gcloud config set project <PROJECT_ID> &&
gcloud auth application-default login <ACCOUNT>
添加 Repositories 和 BOM
Spring AI 工件已发布在 Maven Central 和 Spring Snapshot 仓库中。请参见 Artifact Repositories 章节,以将这些仓库添加到你的构建系统中。
为便于依赖管理,Spring AI 提供了 BOM(物料清单),以确保整个项目中使用统一版本的 Spring AI。请参考 Dependency Management 章节,将 Spring AI BOM 添加到你的构建系统中。
自动配置
Spring AI 自动配置和 starter 模块的 artifact 名称发生了重大变化。更多信息请参阅升级说明。
Spring AI 为 Google GenAI 图像模型提供了 Spring Boot 自动配置。要启用该功能,请将以下依赖项添加到项目的 Maven pom.xml 文件中:
<dependency>
<groupId>org.springframework.ai</groupId>
<artifactId>spring-ai-starter-model-google-genai-image</artifactId>
</dependency>
或添加到你的 Gradle build.gradle 构建文件中。
dependencies {
implementation 'org.springframework.ai:spring-ai-starter-model-google-genai-image'
}
请参阅 依赖管理 部分,将 Spring AI BOM 添加到您的构建文件中。
Image generation Properties
连接属性
前缀 spring.ai.google.genai.image 用作属性前缀,用于连接 Google GenAI 图像生成 API。
连接属性与 Google GenAI 聊天模块共享。如果同时使用聊天和图像功能,只需使用 spring.ai.google.genai 前缀(用于聊天)或 spring.ai.google.genai.image 前缀(用于图像)之一配置一次连接即可。
| 属性 | 描述 | 默认值 |
|---|---|---|
| spring.ai.google.genai.image.api-key | Gemini Developer API 的 API key。如果提供,客户端将使用 Gemini Developer API 而不是 Vertex AI。 | - |
| spring.ai.google.genai.image.project-id | Google Cloud Platform 项目 ID(在 Vertex AI 模式下为必填项) | - |
| spring.ai.google.genai.image.location | Google Cloud 区域(在 Vertex AI 模式下为必填项) | - |
| spring.ai.google.genai.image.credentials-uri | 指向 Google Cloud 凭据的 URI。如果提供,将用于创建 GoogleCredentials 实例以进行身份验证。 | - |
自动配置(auto-configurations)的启用和禁用现在通过前缀为 spring.ai.model.image 的顶级属性进行配置。
如需启用,请设置 spring.ai.model.image=google-genai(默认已启用)。
如需禁用,请设置 spring.ai.model.image=none(或任何不匹配 google-genai 的值)。
此更改旨在允许配置多个模型。
图像生成属性
前缀 spring.ai.google.genai.image 是用于配置 Google GenAI 图像模型实现的属性前缀。
| 属性 | 描述 | 默认值 |
|---|---|---|
| spring.ai.model.image | 启用 Google GenAI API 模型。 | google-genai |
| spring.ai.google.genai.image.n | 生成图像的数量。必须在 1 到 4 之间。 | - |
| spring.ai.google.genai.image.model | 要使用的 Google GenAI 模型。支持的模型包括 gemini-2.5-flash-image、gemini-3-pro-image 和 gemini-3.1-flash-image | - |
| spring.ai.google.genai.image.aspect-ratio | 生成图像的宽高比。支持的值为 1:1、3:4、4:3、9:16 和 16:9 | 1:1 |
| spring.ai.google.genai.image.seed | 图像生成的随机种子。当 add-watermark 设置为 true 时,此项不可用。 | - |
| spring.ai.google.genai.image.safety-filter-level | 安全过滤的级别。支持的值为 BLOCK_LOW_AND_ABOVE、BLOCK_MEDIUM_AND_ABOVE、BLOCK_ONLY_HIGH 和 BLOCK_NONE。 | - |
| spring.ai.google.genai.image.person-generation | 允许模型生成人物。支持的值为 DONT_ALLOW、ALLOW_ADULT 和 ALLOW_ALL。 | - |
| spring.ai.google.genai.image.output-mime-type | 生成图像的 MIME 类型。 | - |
| spring.ai.google.genai.image.output-compression-quality | 生成图像的压缩质量(仅适用于 image/jpeg)。 | - |
| spring.ai.google.genai.image.labels | 用户指定的用于跟踪计费使用的标签。 | - |
| spring.ai.google.genai.image.image-size | 生成图像最大维度的尺寸。支持的尺寸为 1K 和 2K。 | - |
| spring.ai.google.genai.image.temperature | 控制 Token 选择的随机性程度。较低的值产生较为确定的响应,较高的值产生更多样或更有创意的结果。 | - |
| spring.ai.google.genai.image.top-p | 从高概率到低概率选择 Token,直到它们的概率之和等于该值。 | - |
| spring.ai.google.genai.image.top-k | 在每个 Token 选择步骤中,采样概率最高的 top-k 个 Token。 | - |
| spring.ai.google.genai.image.max-output-tokens | 响应中可生成的最大 Token 数。 | - |
示例控制器
创建 新的 Spring Boot 项目,并将 spring-ai-starter-model-google-genai-image 添加到你的 pom(或 gradle)依赖中。
在 src/main/resources 目录下添加 application.properties 文件,以启用并配置 Google GenAI 图像模型:
使用 Gemini Developer API(API Key)
spring.ai.google.genai.image.api-key=YOUR_API_KEY
spring.ai.google.genai.image.model=gemini-2.5-flash-image
使用 Vertex AI
spring.ai.google.genai.image.project-id=YOUR_PROJECT_ID
spring.ai.google.genai.image.location=YOUR_PROJECT_LOCATION
spring.ai.google.genai.image.model=gemini-2.5-flash-image
这将创建一个 GoogleGenAiImageModel 实现,您可以将其注入到类中。下面是一个简单的 @Controller 类示例,它使用图像模型进行图像生成。
@RestController
public class ImageController {
private final ImageModel imageModel;
@Autowired
public ImageController(ImageModel imageModel) {
this.imageModel = imageModel;
}
@GetMapping("/ai/image")
public Map generate(@RequestParam(value = "message", defaultValue = "A painting of a sunset over a mountain") String message) {
ImagePrompt imagePrompt = new ImagePrompt(message);
ImageResponse imageResponse = this.imageModel.call(imagePrompt);
return Map.of("images", imageResponse);
}
}
手动配置
GoogleGenAiImageModel 实现了 ImageModel 接口。
在项目的 Maven pom.xml 文件中添加 spring-ai-google-genai-image 依赖:
<dependency>
<groupId>org.springframework.ai</groupId>
<artifactId>spring-ai-google-genai-image</artifactId>
</dependency>
或添加至您的 Gradle build.gradle 构建文件。
dependencies {
implementation 'org.springframework.ai:spring-ai-google-genai-image'
}
请参阅 依赖管理 章节,以便在构建文件中添加 Spring AI BOM。
接下来,创建一个 GoogleGenAiImageModel 并用于图片:
使用 API 密钥
GoogleGenAiImageConnectionDetails connectionDetails =
GoogleGenAiImageConnectionDetails.builder()
.apiKey(System.getenv("GOOGLE_API_KEY"))
.build();
GoogleGenAiImageOptions options = GoogleGenAiImageOptions.builder()
.model(GoogleGenAiImageOptions.DEFAULT_MODEL_NAME)
.build();
var imageModel = new GoogleGenAiImageModel(connectionDetails, options);
ImageResponse imageResponse = imageModel
.call(new ImagePrompt("A painting of a sunset over a mountain"));
使用 Vertex AI
GoogleGenAiImageConnectionDetails connectionDetails =
GoogleGenAiImageConnectionDetails.builder()
.projectId(System.getenv("GOOGLE_CLOUD_PROJECT"))
.location(System.getenv("GOOGLE_CLOUD_LOCATION"))
.build();
GoogleGenAiImageOptions options = GoogleGenAiImageOptions.builder()
.model(GoogleGenAiImageOptions.DEFAULT_MODEL_NAME)
.build();
var imageModel = new GoogleGenAiImageModel(connectionDetails, options);
ImageResponse imageResponse = imageModel
.call(new ImagePrompt("A painting of a sunset over a mountain"));
安全过滤器级别
Google GenAI 图像 API 支持不同的过滤级别用于安全过滤:
-
BLOCK_LOW_AND_ABOVE:当检测到低、中或高概率的不安全内容时拦截 -
BLOCK_MEDIUM_AND_ABOVE:当检测到中或高概率的不安全内容时拦截 -
BLOCK_ONLY_HIGH:当检测到高概率的不安全内容时拦截 -
BLOCK_NONE:无论不安全内容的概率如何,始终展示 -
SAFETY_FILTER_LEVEL_UNSPECIFIED:未指定阈值,使用默认阈值进行拦截
人物生成
Google GenAI 图像 API 允许模型生成不同级别的人物图像:
-
DONT_ALLOW: 禁止生成人物图像 -
ALLOW_ADULT: 生成成人图像,但不包括儿童 -
ALLOW_ALL: 生成包含成人和儿童的图像 -
PERSON_GENERATION_UNSPECIFIED: 未指定阈值,使用默认阈值生成人物图像