イメージモデル API

Spring Image Model API は、イメージ生成に特化したさまざまな AI モデルと対話するためのシンプルでポータブルなインターフェースとなるように設計されており、開発者は最小限のコード変更でさまざまなイメージ関連モデルを切り替えることができます。この設計は、Spring のモジュール性と互換性の哲学に沿っており、開発者はイメージ処理に関連するさまざまな AI 機能にアプリケーションを迅速に適応させることができます。

さらに、入力カプセル化用の ImagePrompt や出力処理用の ImageResponse などのコンパニオンクラスのサポートにより、イメージモデル API は、イメージ生成専用の AI モデルとの通信を統合します。リクエストの準備とレスポンスの解析の複雑さを管理し、イメージ生成機能のための直接的で簡素化された API 対話を提供します。

Spring イメージモデル API は、Spring AI Generic Model API 上に構築されており、イメージ固有の抽象化と実装を提供します。

API の概要

このセクションでは、Spring イメージモデル 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 イメージ生成モデルには、qualitystyle などの独自のオプションがあります。

これは、開発者がアプリケーションの起動時にモデル固有のオプションを使用し、実行時に 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

}

利用可能な実装

ImageModel 実装は、次のモデルプロバイダーに提供されています。

API ドキュメント

Javadoc はここで見つけることができます。

フィードバックと貢献

プロジェクトの GitHub ディスカッション (英語) は、フィードバックを送信するのに最適な場所です。