影像模型API
Spring 影像模型API旨在提供一個簡單且可移植的介面,用於與各種專門從事影像生成的AI模型進行互動,允許開發者以最少的程式碼更改在不同的影像相關模型之間切換。此設計符合Spring模組化和可互換性的理念,確保開發者可以快速使其應用程式適應與影像處理相關的不同AI功能。
此外,在ImagePrompt用於輸入封裝和ImageResponse用於輸出處理等配套類的支援下,影像模型API統一了與專門用於影像生成的AI模型的通訊。它管理請求準備和響應解析的複雜性,為影像生成功能提供了直接和簡化的API互動。
Spring 影像模型API建立在Spring AI 通用模型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 討論區是傳送反饋的好地方。