跳到主要内容

图像模型 API

DeepSeek V3 中英对照 Image Models Image Model API

Spring Image Model API 旨在为与各种专注于图像生成的 AI 模型 进行交互提供一个简单且可移植的接口,使开发者能够在不同的图像相关模型之间切换,而只需进行最少的代码更改。这一设计符合 Spring 的模块化和可互换性理念,确保开发者能够快速将其应用程序适应于与图像处理相关的不同 AI 能力。

此外,借助 ImagePrompt 等配套类进行输入封装,以及 ImageResponse 进行输出处理的支持,Image Model API 统一了与专注于图像生成的 AI 模型之间的通信。它管理了请求准备和响应解析的复杂性,为图像生成功能提供了直接且简化的 API 交互。

Spring Image Model API 构建在 Spring AI Generic Model API 之上,提供了针对图像的抽象和实现。

API 概览

本节提供了 Spring Image Model API 接口及相关类的指南。

图像模型

以下是 ImageModel 接口的定义:

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

ImageResponse call(ImagePrompt request);

}
java

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
}
java

图片消息

ImageMessage 类封装了要使用的文本以及该文本在影响生成图像时应具有的权重。对于支持权重的模型,权重可以是正数或负数。

public class ImageMessage {

private String text;

private Float weight;

public String getText() {...}

public Float getWeight() {...}

// constructors and utility methods omitted
}
java

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

}
java

此外,每个特定的 ImageModel 实现都可以有自己的一组选项,这些选项可以传递给 AI 模型。例如,OpenAI 图像生成模型有自己的一些选项,如 qualitystyle 等。

这是一个强大的功能,允许开发者在启动应用程序时使用模型特定的选项,然后在运行时使用 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

}
java

ImageResponse 类保存了 AI 模型的输出,每个 ImageGeneration 实例包含一个可能的多个输出中的一个,这些输出是由单个提示生成的。

ImageResponse 类还包含一个 ImageResponseMetadata 对象,该对象保存了关于 AI 模型响应的元数据。

图像生成

最后,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

}
java

可用实现

ImageModel 实现已为以下模型提供者提供:

API 文档

你可以在这里找到 Javadoc 这里

反馈与贡献

该项目的 GitHub discussions 是发送反馈的好地方。

章节摘要