图像模型 API
本站(springdoc.cn)中的内容来源于 spring.io ,原始版权归属于 spring.io。由 springdoc.cn 进行翻译,整理。可供个人学习、研究,未经许可,不得进行任何转载、商用或与之相关的行为。 商标声明:Spring 是 Pivotal Software, Inc. 在美国以及其他国家的商标。 |
Spring Image Model API 设计为简单可移植的接口,用于交互各类专精图像生成的 AI 模型,使开发者能以最小代码变更切换不同图像相关模型。该设计遵循 Spring 模块化与可互换理念,确保应用能快速适配不同的图像处理 AI 能力。
此外,借助 ImagePrompt
等输入封装类和 ImageResponse
等输出处理类,Image Model API 统一了与专精图像生成的AI模型的通信。它管理了请求准备和响应解析的复杂性,为图像生成功能提供直接简化的 API 交互。
Spring Image Model API 构建于 Spring AI 通用模型 API 之上,提供图像专用的抽象与实现。
ImageModel
以下是 ImageModel
接口定义:
@FunctionalInterface
public interface ImageModel extends Model<ImagePrompt, ImageResponse> {
ImageResponse call(ImagePrompt request);
}
ImagePrompt
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() {...}
// 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
,表示可传递给图像生成模型的选项,用于定义少量可跨模型移植的通用参数。
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
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
实例包含单个提示词可能生成的多个输出之一。
最后,ImageGeneration
类继承 ModelResult
,用于表示输出响应及相关的元数据信息:
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 讨论区 提交反馈。