图像模型 API
Spring Image Model API 旨在提供一个简单且可移植的接口,用于与专攻图像生成的各类 AI 模型 进行交互,使开发者能够以最小的代码改动在不同图像相关模型之间进行切换。这种设计与 Spring 强调模块化和可互换性的理念相一致,确保开发者能够快速将应用程序适配到不同的图像处理 AI 能力。
此外,得益于 ImagePrompt 等伴生类用于输入封装,以及 ImageResponse 用于输出处理的支持,Image Model API 统一了与专注于图像生成的 AI 模型的通信。它管理了请求准备和响应解析的复杂性,为图像生成功能提供了直接且简化的 API 交互体验。
Spring 图像模型 API 构建于 Spring AI Generic Model API 之上,提供了图像特定的抽象和实现。
API 概览
本节提供了 Spring Image Model API 接口及相关类的指南。
图像模型
以下是 ImageModel 接口定义:
@FunctionalInterface
public interface ImageModel extends Model<ImagePrompt, ImageResponse> {
ImageResponse call(ImagePrompt request);
}
ImagePrompt
ImagePrompt 是一个 ModelRequest,它封装了一个 ImageMessage 对象列表以及可选的模型请求选项。以下列表展示了 ImagePrompt 类的截断版本,排除了构造函数和其他实用方法:
public class ImagePrompt implements ModelRequest<List<ImageMessage>> {
private final List<ImageMessage> messages;
private ImageOptions imageModelOptions;
@Override
public List<ImageMessage> getInstructions() {...}
@Override
public ImageOptions getOptions() {...}
// constructors and utility methods omitted
}
ImageMessage
ImageMessage 类封装了要使用的文本以及该文本在影响生成图像时应具有的权重。对于支持权重的模型,权重可以是正值或负值。
public class ImageMessage {
private String text;
private Float weight;
public String getText() {...}
public Float getWeight() {...}
// constructors and utility methods omitted
}
ImageOptions
表示可以传递给图像生成模型的选项。ImageOptions 接口继承自 ModelOptions 接口,用于定义一些可以传递给 AI 模型的通用选项。
ImageOptions 接口的定义如下:
public interface ImageOptions extends ModelOptions {
Integer getN();
String getModel();
Integer getWidth();
Integer getHeight();
String getResponseFormat(); // openai - url or base64 : stability ai byte[] or base64
}
此外,每个特定模型的 ImageModel 实现都可以拥有自己的选项,这些选项可以传递给 AI 模型。例如,OpenAI Image Generation 模型拥有诸如 quality、style 等自己的选项。
这是一个强大的功能,允许开发者在启动应用时使用模型特定选项,然后使用 ImagePrompt 在运行时覆盖它们。
ImageResponse
ImageResponse 类的结构如下:
public class ImageResponse implements ModelResponse<ImageGeneration> {
private final ImageResponseMetadata imageResponseMetadata;
private final List<ImageGeneration> imageGenerations;
@Override
public ImageGeneration getResult() {
// get the first result
}
@Override
public List<ImageGeneration> getResults() {...}
@Override
public ImageResponseMetadata getMetadata() {...}
// other methods omitted
}
ImageResponse 类用于承载 AI 模型的输出,其中每个 ImageGeneration 实例包含单次 Prompt 生成的多个可能输出中的一个。
ImageResponse 类还包含一个 ImageResponseMetadata 对象,其中持有有关 AI Model 响应的元数据。
ImageGeneration
最后,ImageGeneration 类继承自 ModelResult,用于表示该结果的输出响应及相关元数据:
public class ImageGeneration implements ModelResult<Image> {
private ImageGenerationMetadata imageGenerationMetadata;
private Image image;
@Override
public Image getOutput() {...}
@Override
public ImageGenerationMetadata getMetadata() {...}
// other methods omitted
}
可用实现
ImageModel 实现由以下 Model 提供商提供:
本节摘要
Azure OpenAI
自 Spring AI 2.0.0-M5 版本起,应使用 OpenAI Image 来访问部署在 Azure / Microsoft Foundry 上的 OpenAI 模型。
OpenAI
Spring AI 支持 OpenAI 的图像生成模型 DALL-E。
稳定性
Spring AI 支持 Stability AI 的文生图模型。
Google GenAI
Gemini 2.5 Flash 图像模型和 Gemini 3.1 Flash 图像模型通过 Gemini Developer API 或 Vertex AI,使用 Google 的图像模型提供图像生成功能。