图像生成 API

Spring 图像生成 API 旨在成为一个简单且便携的接口,用于与各种专门用于图像生成的 AI 模型 进行交互,使开发人员能够在最小的代码更改下在不同的图像相关模型之间切换。这种设计符合 Spring 的模块化和可互换性的理念,确保开发人员可以迅速适应与图像处理相关的不同 AI 能力。

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

Spring 图像生成 API 建立在 Spring AI 通用模型 API 之上,提供了针对图像的具体抽象和实现。

API 概述

本节介绍了 Spring 图像生成 API 接口及相关类的指南。

图像客户端

翻译后的HTML代码如下:

这里是 ImageClient 接口定义:

@FunctionalInterface
public interface ImageClient extends ModelClient<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() {...}

    // 构造函数和实用方法省略
}

ImageMessage

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

public class ImageMessage {

	private String text;

	private Float weight;

    public String getText() {...}

	public Float getWeight() {...}

   // 构造函数和实用方法省略
}

ImageOptions

ImageOptions 类代表可以传递给图像生成模型的选项。这个类扩展了 ModelOptions 接口,并用于定义可以传递给人工智能模型的几个可移植选项。

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

}

此外,每个特定模型的 ImageClient 实现可以具有自己的选项,这些选项可以在启动应用程序时使用,并且可以在运行时使用 ImagePrompt 覆盖。

这是一个强大的功能,允许开发者在应用程序启动时使用特定于模型的选项,然后在运行时使用 ImagePrompt 进行覆盖。

图像响应

ChatResponse 类的结构如下所示:

public class ImageResponse implements ModelResponse<ImageGeneration> {

	private final ImageResponseMetadata 图像响应元数据;

	private final List<ImageGeneration> 图像生成;

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

	@Override
	public List<ImageGeneration> getResults() {...}

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

    // 其他方法省略

}

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

ImageResponse 类还携带了关于 AI 模型响应的 ImageResponseMetadata 元数据。

图像生成

最后,ImageGeneration 类从 ModelResult 扩展以表示输出响应以及有关此结果的相关元数据:

public class ImageGeneration implements ModelResult<Image> {

	private ImageGenerationMetadata 图像生成元数据;

	private Image 图像;

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

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

    // 其他方法省略

}

可用实现

ImageClient 实现提供以下模型提供商:

API 文档

您可以在这里找到 Javadoc 链接

反馈与贡献

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