Skip to content
Spring AI 文档版本 2.1.0-SNAPSHOT 源快照 f0099d0c 更新于 2026-10-16

图像模型 API

Spring Image Model API 被设计为一个简单且可移植的接口,用于与各种专做图像生成的 AI 模型交互,让开发者只需极少代码改动就能在不同图像相关模型间切换。 这一设计与 Spring 的模块化与可互换理念一脉相承,确保开发者能就图像相关的不同 AI 能力快速调整其应用。

此外,借助用于输入封装的 ImagePrompt 和用于输出处理的 ImageResponse 等配套类,图像模型 API 统一了与专门做图像生成的 AI 模型的通信。 它管理请求准备与响应解析的复杂性,为图像生成功能提供直接而简化的 API 交互。

Spring 图像模型 API 构建在 Spring AI 通用模型 API 之上,提供图像特定的抽象与实现。

API 概览

本节提供 Spring 图像模型 API 接口及相关类的指南。

Image Model

以下是 ImageModel 接口的定义:

java
@FunctionalInterface
public interface ImageModel extends Model<ImagePrompt, ImageResponse> {

	ImageResponse call(ImagePrompt request);

}

ImagePrompt

ImagePrompt 是一个 ModelRequest,它封装了一个 ImageMessage 对象列表以及可选的模型请求选项。 下面的清单展示了 ImagePrompt 类的精简版本,省略了构造器和其他工具方法:

java
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 类封装了要使用的文本,以及该文本在影响所生成图像时应具有的权重。对于支持权重的模型,权重可正可负。

java
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 接口定义如下:

java
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 图像生成模型就有它自己的选项,如 quality、style 等。

这是一个强大的特性,让开发者能在应用启动时使用模型特定的选项,随后在运行时用 ImagePrompt 覆盖它们。

ImageResponse

ImageResponse 类的结构如下:

java
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 实例包含由单个提示词产生的、可能多个输出中的一个。

ImageResponse 类还携带一个 ImageResponseMetadata 对象,持有关于 AI 模型响应的元数据。

ImageGeneration

最后,ImageGeneration 类继承自 ModelResult,用于表示输出响应及与该结果相关的元数据:

java
public class ImageGeneration implements ModelResult<Image> {

	private ImageGenerationMetadata imageGenerationMetadata;

	private Image image;

    @Override
	public Image getOutput() {...}

	@Override
	public ImageGenerationMetadata getMetadata() {...}

    // other methods omitted

}

可用实现

ImageModel 实现为以下模型服务商提供:

BytesRouter 是社区翻译站点,所有译文仅供参考,一切以官方英文原文为准。