图像模型 API

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

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

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

API 概述

本节提供 Spring 图像模型 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 图像生成模型具有自己的选项,如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

}

ImageResponse类保存 AI 模型的输出,每个ImageGeneration实例包含单个提示可能产生的多个输出之一。

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

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

}

API 文档

您可以在此处找到 Javadoc。

反馈和贡献

项目的GitHub 讨论区是发送反馈的好地方。