图像模型 API
Spring Image Model API
被设计为一个简单且可移植的接口,用于与各种专门用于图像生成的 AI 模型 交互,允许开发人员在不同的图像相关模型之间切换,而只需进行最少的代码更改。这种设计符合 Spring 的模块化和可互换性理念,确保开发人员可以快速地将他们的应用程序适应与图像处理相关的不同 AI 功能。
此外,通过对诸如用于输入封装的 ImagePrompt
和用于输出处理的 ImageResponse
等配套类的支持,Image Model API 统一了与专门用于图像生成的 AI 模型的通信。它管理了请求准备和响应解析的复杂性,为图像生成功能提供了直接且简化的 API 交互。
Spring Image Model API 建立在 Spring AI 通用模型 API
之上,提供了特定于图像的抽象和实现。
图像模型
以下是 ImageModel 接口定义
@FunctionalInterface
public interface ImageModel extends Model<ImagePrompt, ImageResponse> {
ImageResponse call(ImagePrompt request);
}
图像提示
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 图像生成模型有自己的选项,例如 quality
、style
等。
这是一个强大的功能,允许开发人员在启动应用程序时使用特定于模型的选项,然后在运行时使用 ImagePrompt
覆盖它们。
ImageResponse
ChatResponse
类的结构如下:
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
类还包含有关 AI 模型响应的 ImageResponseMetadata
元数据。
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 讨论 是发送反馈的绝佳场所。