侧边栏壁纸
博主头像
AI中文站

write sth

  • 累计撰写 36 篇文章
  • 累计创建 3 个标签
  • 累计收到 0 条评论

目 录CONTENT

文章目录

SpringAI-Image Model API

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文档。

0

评论区