Azure OpenAI イメージ生成

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

前提条件

Azure ポータル (英語) の Azure OpenAI サービスセクションから Azure、OpenAI、endpointapi-key を入手します。

Spring AI は 2 つの構成プロパティを定義します。

  1. spring.ai.azure.openai.api-key: これを Azure から取得した API Key の値に設定します。

  2. spring.ai.azure.openai.endpoint: Azure でモデルをプロビジョニングするときに取得したエンドポイント URL に設定します。

application.properties ファイルで次の構成プロパティを設定できます。

spring.ai.azure.openai.api-key=<your-azure-openai-api-key>
spring.ai.azure.openai.endpoint=<your-azure-openai-endpoint>

API キーなどの機密情報を扱う際のセキュリティを強化するために、Spring 式言語 (SpEL) を使用してカスタム環境変数を参照できます。

# In application.yml
spring:
  ai:
    azure:
      openai:
        api-key: ${AZURE_OPENAI_API_KEY}
        endpoint: ${AZURE_OPENAI_ENDPOINT}
# In your environment or .env file
export AZURE_OPENAI_API_KEY=<your-azure-openai-api-key>
export AZURE_OPENAI_ENDPOINT=<your-azure-openai-endpoint>

これらの構成をアプリケーションコードでプログラム的に設定することもできます。

// Retrieve API key and endpoint from secure sources or environment variables
String apiKey = System.getenv("AZURE_OPENAI_API_KEY");
String endpoint = System.getenv("AZURE_OPENAI_ENDPOINT");

デプロイ名

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 アーティファクトは、Maven Central リポジトリと Spring スナップショットリポジトリに公開されています。これらのリポジトリをビルドシステムに追加するには、アーティファクトリポジトリセクションを参照してください。

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

自動構成

Spring AI 自動構成、スターターモジュールのアーティファクト名に大きな変更がありました。詳細については、アップグレードノートを参照してください。

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

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

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

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

イメージ生成プロパティ

イメージの自動構成の有効化と無効化は、プレフィックス spring.ai.model.image を持つ最上位プロパティを介して構成されるようになりました。

有効にするには、spring.ai.model.image=azure-openai (デフォルトで有効になっています)

無効にするには、spring.ai.model.image=none (または azure-openai に一致しない値)

この変更は、複数のモデルの構成を可能にするために行われます。

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

プロパティ

説明

デフォルト

spring.ai.azure.openai.image.enabled (削除され、無効になりました)

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

true

spring.ai.model.image

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

azure-openai

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()
                .quality("hd")
                .N(4)
                .height(1024)
                .width(1024).build())

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