影像模型 API

Spring 影像模型 API 設計為一個簡單且可移植的介面,用於與各種專門從事影像生成的 AI 模型 進行互動,允許開發者以最少的程式碼更改在不同的影像相關模型之間切換。這種設計與 Spring 的模組化和可互換性理念一致,確保開發者可以快速使其應用程式適應與影像處理相關的不同 AI 能力。

此外,藉助 ImagePrompt 用於輸入封裝和 ImageResponse 用於輸出處理等伴隨類,影像模型 API 統一了與專門用於影像生成的 AI 模型之間的通訊。它管理請求準備和響應解析的複雜性,為影像生成功能提供了直接且簡化的 API 互動。

Spring 影像模型 API 構建在 Spring AI 通用模型 API 之上,提供了影像特定的抽象和實現。

API 概述

本節提供 Spring 影像模型 API 介面和相關類的指南。

Image Model

以下是 ImageModel 介面定義

@FunctionalInterface
public interface ImageModel extends Model<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() {...}

    // 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 影像生成模型有其自己的選項,例如 qualitystyle 等。

這是一項強大的功能,允許開發者在啟動應用程式時使用模型特定的選項,然後在執行時使用 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 例項包含一個由單個 prompt 生成的潛在多個輸出中的一個。

ImageResponse 類還包含一個 ImageResponseMetadata 物件,該物件包含有關 AI 模型響應的元資料。

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 discussions 是提交反饋的好地方。