图像生成 API
Spring 图像生成 API
旨在成为一个简单且便携的接口,用于与各种专门用于图像生成的 AI 模型 进行交互,使开发人员能够在最小的代码更改下在不同的图像相关模型之间切换。这种设计符合 Spring 的模块化和可互换性的理念,确保开发人员可以迅速适应与图像处理相关的不同 AI 能力。
此外,借助伴随类如 ImagePrompt
进行输入封装和 ImageResponse
进行输出处理的支持,图像生成 API 统一了与专门用于图像生成的 AI 模型的通信。它管理了请求准备和响应解析的复杂性,为图像生成功能提供了直接且简化的 API 交互方式。
Spring 图像生成 API 建立在 Spring AI 通用模型 API
之上,提供了针对图像的具体抽象和实现。
图像客户端
这里是 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() {...}
// 其他方法省略
}
API 文档
您可以在这里找到 Javadoc 链接。
反馈与贡献
项目的 GitHub 讨论 是发送反馈的好地方。