| 此版本仍在开发中,尚未被视为稳定版本。最新的快照版本请使用 Spring AI 1.0.0-SNAPSHOT! | 
图像模型 API
这Spring Image Model API旨在成为一个简单且可移植的界面,用于与专门用于图像生成的各种 AI 模型进行交互,使开发人员能够以最少的代码更改在不同的图像相关模型之间切换。
这种设计符合 Spring 的模块化和可互换性理念,确保开发人员能够快速使其应用程序适应与图像处理相关的不同 AI 功能。
此外,在诸如ImagePrompt用于输入封装和ImageResponse对于输出处理,图像模型 API 统一了与专用于图像生成的 AI 模型的通信。
它管理请求准备和响应解析的复杂性,为映像生成功能提供直接和简化的 API 交互。
Spring Image Model API 构建在 Spring AI 之上Generic 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
}图片消息
这ImageMessageclass 封装要使用的文本以及文本在影响生成的图像时应具有的权重。对于支持权重的模型,权重可以是正数或负数。
public class ImageMessage {
	private String text;
	private Float weight;
    public String getText() {...}
	public Float getWeight() {...}
   // constructors and utility methods omitted
}图像选项
表示可以传递给 Image generation model 的选项。这ImageOptionsinterface 扩展了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.
图像响应
的结构ImageResponseclass 的 API 如下所示:
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 类从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 讨论是发送反馈的好地方。