Image Generation API

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

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

Spring Image Generation API 构建在 Spring AI 之上 Generic Model API,提供特定于图像的抽象和实现。

API 概述

本节提供 Spring Image Generation API 接口和关联类的指南。

Image Client

这是 ImageClient 接口定义:

@FunctionalInterface
public interface ImageClient extends ModelClient<ImagePrompt, ImageResponse> {

    ImageResponse call(ImagePrompt request);

}

ImagePrompt

ImagePrompt 封装了 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

}

此外,每个模型特定的 ImageClient 实现都可以有自己的选项,可以传递给 AI 模型。例如,OpenAI 图像生成模型有自己的选项,如 quality, style 等。

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

}

可用的实现

以下模型提供者为 ImageClient 提供了实现:

API 文档

你可以在此处 找到 Javadoc .

作者:Jeebiz  创建时间:2024-04-05 23:10
最后编辑:Jeebiz  更新时间:2024-07-06 19:00