イメージモデル API
Spring Image Model API
は、イメージ生成に特化したさまざまな AI モデルと対話するためのシンプルでポータブルなインターフェースとなるように設計されており、開発者は最小限のコード変更でさまざまなイメージ関連モデルを切り替えることができます。この設計は、Spring のモジュール性と互換性の哲学に沿っており、開発者はイメージ処理に関連するさまざまな AI 機能にアプリケーションを迅速に適応させることができます。
さらに、入力カプセル化用の ImagePrompt
や出力処理用の ImageResponse
などのコンパニオンクラスのサポートにより、イメージモデル API は、イメージ生成専用の AI モデルとの通信を統合します。リクエストの準備とレスポンスの解析の複雑さを管理し、イメージ生成機能のための直接的で簡素化された API 対話を提供します。
Spring イメージモデル API は、Spring AI Generic Model API
上に構築されており、イメージ固有の抽象化と実装を提供します。
イメージモデル
ImageModel [GitHub] (英語) インターフェース定義は次のとおりです。
@FunctionalInterface
public interface ImageModel extends Model<ImagePrompt, ImageResponse> {
ImageResponse call(ImagePrompt request);
}
ImagePrompt
ImagePrompt [GitHub] (英語) は、ImageMessage [GitHub] (英語) オブジェクトのリストとオプションのモデルリクエストオプションをカプセル化する ModelRequest
です。次のリストは、コンストラクターとその他のユーティリティメソッドを除いた、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
ChatResponse
クラスの構造は次のとおりです。
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 [GitHub] (英語) クラスは AI モデルの出力を保持します。各 ImageGeneration
インスタンスには、単一のプロンプトから得られる複数の出力のうちの 1 つが含まれます。
ImageResponse
クラスは、AI モデルのレスポンスに関する ImageResponseMetadata
メタデータも保持します。
ImageGeneration
最後に、ImageGeneration [GitHub] (英語) クラスは ModelResult
から拡張され、出力レスポンスとこの結果に関する関連メタデータを表します。
public class ImageGeneration implements ModelResult<Image> {
private ImageGenerationMetadata imageGenerationMetadata;
private Image image;
@Override
public Image getOutput() {...}
@Override
public ImageGenerationMetadata getMetadata() {...}
// other methods omitted
}
フィードバックと貢献
プロジェクトの GitHub ディスカッション (英語) は、フィードバックを送信するのに最適な場所です。