Azure OpenAI イメージ生成

Spring AI は、Azure、OpenAI のイメージ生成モデルである DALL-E をサポートします。

前提条件

Azure ポータル (英語) の Azure OpenAI サービスセクションから Azure OpenAI endpoint および api-key を取得します。Spring AI は、Azure から取得した API Key の値に設定する必要がある spring.ai.azure.openai.api-key という構成プロパティを定義します。また、Azure でモデルをプロビジョニングするときに取得したエンドポイント URL に設定する必要がある spring.ai.azure.openai.endpoint という構成プロパティもあります。環境変数をエクスポートすることは、これらの構成プロパティを設定する 1 つの方法です。

export SPRING_AI_AZURE_OPENAI_API_KEY=<INSERT KEY HERE>
export SPRING_AI_AZURE_OPENAI_ENDPOINT=<INSERT ENDPOINT URL HERE>

デプロイ名

Azure AI アプリケーションの実行を使用するには、[Azure AI ポータル ]( oai.azure.com/portal (英語) ) を通じて Azure AI デプロイ を作成します。

Azure では、各クライアントは Azure OpenAI サービスに接続するために Deployment Name を指定する必要があります。

Deployment Name は、導入することを選択したモデルとは異なることを理解することが重要です

たとえば、"MyImgAiDeployment" という名前の デプロイ は、Dalle3 モデルまたは Dalle2 モデルのいずれかを使用するように構成できます。

現時点では、物事をシンプルにするために、次の設定を使用して デプロイ を作成できます。

デプロイ名: MyImgAiDeployment 形名: Dalle3

この Azure 構成は、Spring Boot Azure AI スターターおよびその自動構成機能のデフォルト構成と一致します。

別の デプロイ 名を使用する場合は、それに応じて構成プロパティを更新します。

spring.ai.azure.openai.image.options.deployment-name=<my deployment name>

Azure、OpenAI、OpenAI の異なる デプロイ 構造により、Azure、OpenAI クライアントライブラリに deploymentOrModelName というプロパティが作成されます。これは、OpenAI には Deployment Name がなく、Model Name のみがあるためです。

リポジトリと BOM の追加

Spring AI アーティファクトは、Spring マイルストーンおよびスナップショットリポジトリで公開されます。これらのリポジトリをビルドシステムに追加するには、リポジトリセクションを参照してください。

依存関係の管理を支援するために、Spring AI は BOM (部品表) を提供し、一貫したバージョンの Spring AI がプロジェクト全体で使用されるようにします。Spring AI BOM をビルドシステムに追加するには、"依存関係管理" セクションを参照してください。

自動構成

Spring AI は、Azure OpenAI チャットクライアント用の Spring Boot 自動構成を提供します。これを有効にするには、プロジェクトの Maven pom.xml ファイルに次の依存関係を追加します。

<dependency>
    <groupId>org.springframework.ai</groupId>
    <artifactId>spring-ai-azure-openai-spring-boot-starter</artifactId>
</dependency>

または、Gradle build.gradle ビルドファイルに保存します。

dependencies {
    implementation 'org.springframework.ai:spring-ai-azure-openai-spring-boot-starter'
}
Spring AI BOM をビルドファイルに追加するには、"依存関係管理" セクションを参照してください。

イメージ生成プロパティ

接頭辞 spring.ai.openai.image は、OpenAI の ImageModel 実装を構成できるプロパティ接頭辞です。

プロパティ

説明

デフォルト

spring.ai.azure.openai.image.enabled

OpenAI イメージモデルを有効にします。

true

spring.ai.azure.openai.image.options.n

生成するイメージの数。1 ~ 10 の範囲である必要があります。dall-e-3 の場合、n=1 のみがサポートされます。

-

spring.ai.azure.openai.image.options.model

イメージ生成に使用するモデル。

AzureOpenAiImageOptions.DEFAULT_IMAGE_MODEL

spring.ai.azure.openai.image.options.quality

生成されるイメージの品質。HD は、より詳細なイメージとイメージ全体の一貫性を高めたイメージを作成します。このパラメーターは、dall-e-3 でのみサポートされます。

-

spring.ai.azure.openai.image.options.response_format

生成されたイメージが返される形式。URL または b64_json のいずれかである必要があります。

-

spring.ai.openai.image.options.size

生成されるイメージのサイズ。dall-e-2 の場合は、256x256, 512x512 または 1024x1024 のいずれかである必要があります。1024x1024, 1792x1024 または 1024x1792 (dall-e-3 モデルの場合) のいずれかである必要があります。

-

spring.ai.openai.image.options.size_width

生成されたイメージの幅。dall-e-2 の場合は 256, 512,, 1024 のいずれかである必要があります。

-

spring.ai.openai.image.options.size_height

生成されたイメージの高さ。dall-e-2 の場合は 256, 512,, 1024 のいずれかである必要があります。

-

spring.ai.openai.image.options.style

生成されたイメージのスタイル。鮮やかまたはナチュラルのいずれかである必要があります。Vivid を使用すると、モデルは非常にリアルでドラマチックなイメージを生成する方向に傾きます。Natural を選択すると、モデルはより自然で、あまり現実的ではないイメージを生成します。このパラメーターは、dall-e-3 でのみサポートされます。

-

spring.ai.openai.image.options.user

エンドユーザーを表す一意の識別子。Azure OpenAI が不正使用を監視および検出できます。

-

接続プロパティ

プレフィックス spring.ai.openai は、Azure OpenAI に接続できるようにするプロパティプレフィックスとして使用されます。

プロパティ

説明

デフォルト

spring.ai.azure.openai.endpoint

接続先の URL

マイダル 3.openai.azure.com/ (英語)

spring.ai.azure.openai.apiKey

API キー

-

ランタイムオプション

OpenAiImageOptions.java [GitHub] (英語) では、使用するモデル、品質、サイズなどのモデル構成を提供します。

起動時に、AzureOpenAiImageModel(OpenAiImageApi openAiImageApi) コンストラクターと withDefaultOptions(OpenAiImageOptions defaultOptions) メソッドを使用してデフォルトのオプションを構成できます。あるいは、前述の spring.ai.azure.openai.image.options.* プロパティを使用します。

実行時に、ImagePrompt 呼び出しに新しいリクエスト固有のオプションを追加することで、デフォルトのオプションをオーバーライドできます。たとえば、品質や作成するイメージの数などの OpenAI 固有のオプションをオーバーライドするには、次のコード例を使用します。

ImageResponse response = azureOpenaiImageModel.call(
        new ImagePrompt("A light cream colored mini golden doodle",
        OpenAiImageOptions.builder()
                .withQuality("hd")
                .withN(4)
                .withHeight(1024)
                .withWidth(1024).build())

);
モデル固有の AzureOpenAiImageOptions [GitHub] (英語) に加えて、ImageOptionsBuilder#builder() [GitHub] (英語) で作成されたポータブル ImageOptions [GitHub] (英語) インスタンスを使用できます。