影像模型 API
Spring 影像模型 API
的設計宗旨是成為一個簡單且可攜式的介面,用於與各種專門用於影像產生的 AI 模型 互動,讓開發人員能夠以最少的程式碼變更在不同的影像相關模型之間切換。此設計符合 Spring 的模組化和可互換性理念,確保開發人員可以快速調整其應用程式,以適應與影像處理相關的不同 AI 功能。
此外,在 ImagePrompt
(用於輸入封裝)和 ImageResponse
(用於輸出處理)等配套類別的支援下,影像模型 API 統一了與專用於影像產生的 AI 模型之間的通訊。它管理了請求準備和回應解析的複雜性,為影像產生功能提供了直接且簡化的 API 互動。
Spring 影像模型 API 建構於 Spring AI Generic Model API
之上,提供影像特定的抽象化和實作。
影像模型
以下是 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 影像產生模型有自己的選項,如 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
實例都包含單一提示可能產生的多個輸出之一。
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 討論區 是發送意見回饋的好地方。