收藏本站,收获最前沿的人工智能与编程资讯!!

Spring AI 图像模型 API

技术文档 13℃ 0

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{

	ImageResponse call(ImagePrompt request);

}

ImagePrompt

ImagePrompt 是一种模型请求对象,封装了 ImageMessage 对象列表和可选的模型请求参数。以下代码展示了 ImagePrompt 类的精简版本,省略了构造方法和其他工具方法:

public class ImagePrompt implements ModelRequest> {

    private final Listmessages;

	private ImageOptions imageModelOptions;

    @Override
	public ListgetInstructions() {...}

	@Override
	public ImageOptions getOptions() {...}

    // 构造方法和工具方法已省略
}

ImageMessage

ImageMessage 类封装了生成图像使用的文本,以及该文本对生成图像的影响权重。对于支持权重的模型,权重可以为正值或负值。

public class ImageMessage {

	private String text;

	private Float weight;

    public String getText() {...}

	public Float getWeight() {...}

   // 构造方法和工具方法已省略
}

ImageOptions

表示可传递给图像生成模型的配置参数。ImageOptions 接口继承自 ModelOptions 接口,用于定义少量可传递给 AI 模型的通用可移植参数。

ImageOptions 接口定义如下:

public interface ImageOptions extends ModelOptions {

	Integer getN();

	String getModel();

	Integer getWidth();

	Integer getHeight();

	String getResponseFormat(); // OpenAI:url 或 base64;Stability AI:byte[] 或 base64

}

此外,每个模型专用的 ImageModel 实现类都可以支持传递专属的自定义参数。例如,OpenAI 图像生成模型支持质量、风格等专属参数。

这是一项强大的特性,允许开发者在应用启动时配置模型专属参数,并在运行时通过 ImagePrompt 覆盖这些参数。

ImageResponse

ImageResponse 类的结构如下:

public class ImageResponse implements ModelResponse{

	private final ImageResponseMetadata imageResponseMetadata;

	private final ListimageGenerations;

	@Override
	public ImageGeneration getResult() {
		// 获取第一个结果
	}

	@Override
	public ListgetResults() {...}

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

    // 其他方法已省略
}

ImageResponse 类存储 AI 模型的输出结果,每个 ImageGeneration 实例对应单次提示词生成的多个输出结果中的一个。

ImageResponse 类还包含一个 ImageResponseMetadata 对象,用于存储 AI 模型响应的元数据。

ImageGeneration

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

public class ImageGeneration implements ModelResult{

	private ImageGenerationMetadata imageGenerationMetadata;

	private Image image;

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

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

    // 其他方法已省略
}

可用实现

目前为以下模型提供商提供了 ImageModel 实现:

  • OpenAI 图像生成

  • Azure OpenAI 图像生成

  • 千帆大模型 图像生成

  • StabilityAI 图像生成

  • 智谱AI 图像生成

相关推荐