Spring Image Model API旨在为各类专业图像生成AI模型提供简洁、可移植的交互接口,使开发者能以最小代码改动切换不同的图像处理模型。该设计遵循Spring模块化与可互换性理念,确保开发者能快速适配应用至不同的图像处理AI能力。
此外,通过配套类(如封装输入的ImagePrompt和处理输出的ImageResponse),该API统一了与图像生成AI模型的通信流程。它管理了请求准备和响应解析的复杂性,为图像生成功能提供直接简化的API交互体验。
Spring Image Model API构建于Spring AI通用模型API之上,提供图像领域的专属抽象与实现。
API概览
本节介绍Spring Image Model API接口及相关类。
图像模型
ImageModel接口定义如下:
@FunctionalInterface
public interface ImageModel extends Model<ImagePrompt, ImageResponse> {
ImageResponse call(ImagePrompt request);
}
图像提示
ImagePrompt作为ModelRequest封装ImageMessage对象列表及可选的模型请求选项。简化版类定义如下(构造函数和工具方法已省略):
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类封装待使用的文本及其影响生成图像的权重值。支持权重的模型可接受正值或负值:
public class ImageMessage {
private String text;
private Float weight;
public String getText() {...}
public Float getWeight() {...}
}
图像选项
ImageOptions接口扩展ModelOptions接口,定义可传递给AI模型的通用图像生成选项:
public interface ImageOptions extends ModelOptions {
Integer getN();
String getModel();
Integer getWidth();
Integer getHeight();
String getResponseFormat(); // 如OpenAI支持url/base64;StabilityAI支持byte[]/base64
}
各模型专属的ImageModel实现可携带特定选项(如OpenAI图像模型支持质量、风格等参数)。此功能允许开发者在应用启动时使用模型专属选项,并通过ImagePrompt在运行时动态覆盖。
图像响应
ImageResponse类结构如下:
public class ImageResponse implements ModelResponse<ImageGeneration> {
private final ImageResponseMetadata imageResponseMetadata;
private final List<ImageGeneration> imageGenerations;
@Override
public ImageGeneration getResult() {...} // 获取首个结果
@Override
public List<ImageGeneration> getResults() {...}
@Override
public ImageResponseMetadata getMetadata() {...}
}
该类承载AI模型的输出结果,每个ImageGeneration实例对应单个提示可能产生的多组输出之一,同时包含存储响应元数据的ImageResponseMetadata对象。
图像生成结果
ImageGeneration类扩展ModelResult,表示输出响应及其相关元数据:
public class ImageGeneration implements ModelResult<Image> {
private ImageGenerationMetadata imageGenerationMetadata;
private Image image;
@Override
public Image getOutput() {...}
@Override
public ImageGenerationMetadata getMetadata() {...}
}
可用实现
当前为以下模型提供商提供ImageModel实现:
OpenAI图像生成
Azure OpenAI图像生成
千帆图像生成
StabilityAI图像生成
智谱AI图像生成
API文档
可通过[此链接]访问Javadoc文档。
评论区