OpenAI イメージの生成
Spring AI は、OpenAI のイメージ生成モデルである DALL-E をサポートしています。
前提条件
ChatGPT モデルにアクセスするには、OpenAI で API キーを作成する必要があります。OpenAI サインアップページ (英語) でアカウントを作成し、API キーページ (英語) でトークンを生成します。Spring AI プロジェクトでは、spring.ai.openai.api-key
という名前の構成プロパティが定義されており、これを openai.com から取得した API Key
の値に設定する必要があります。環境変数をエクスポートすることは、その構成プロパティを設定する 1 つの方法です。
export SPRING_AI_OPENAI_API_KEY=<INSERT KEY HERE>
自動構成
Spring AI は、OpenAI イメージ生成クライアント用の Spring Boot 自動構成を提供します。これを有効にするには、プロジェクトの Maven pom.xml
ファイルに次の依存関係を追加します。
<dependency>
<groupId>org.springframework.ai</groupId>
<artifactId>spring-ai-openai-spring-boot-starter</artifactId>
</dependency>
または、Gradle build.gradle
ビルドファイルに保存します。
dependencies {
implementation 'org.springframework.ai:spring-ai-openai-spring-boot-starter'
}
Spring AI BOM をビルドファイルに追加するには、"依存関係管理" セクションを参照してください。 |
イメージ生成プロパティ
接続プロパティ
接頭辞 spring.ai.openai
は、OpenAI への接続を可能にするプロパティ接頭辞として使用されます。
プロパティ | 説明 | デフォルト |
spring.ai.openai.base-url | 接続先の URL | |
spring.ai.openai.api-key | API キー | - |
spring.ai.openai.organization-id | オプションで、API リクエストに使用する組織を指定できます。 | - |
spring.ai.openai.project-id | 必要に応じて、API リクエストに使用するプロジェクトを指定できます。 | - |
複数の組織に属しているユーザー(または従来のユーザー API キーを使用してプロジェクトにアクセスしているユーザー)の場合は、オプションで、API リクエストに使用する組織とプロジェクトを指定できます。これらの API リクエストからの使用量は、指定された組織とプロジェクトの使用量としてカウントされます。 |
再試行プロパティ
プレフィックス spring.ai.retry
は、OpenAI イメージクライアントの再試行メカニズムを構成できるプロパティプレフィックスとして使用されます。
プロパティ | 説明 | デフォルト |
---|---|---|
spring.ai.retry.max-attempts | 再試行の最大回数。 | 10 |
spring.ai.retry.backoff.initial-interval | 指数関数的バックオフポリシーの初期スリープ期間。 | 2 秒 |
spring.ai.retry.backoff.multiplier | バックオフ間隔の乗数。 | 5 |
spring.ai.retry.backoff.max-interval | 最大バックオフ期間。 | 3 分 |
spring.ai.retry.on-client-errors | false の場合、NonTransientAiException をスローし、 | false |
spring.ai.retry.exclude-on-http-codes | 再試行をトリガーすべきではない HTTP ステータスコードのリスト (NonTransientAiException をスローするなど)。 | 空 |
spring.ai.retry.on-http-codes | 再試行をトリガーする必要がある HTTP ステータスコードのリスト (例: TransientAiException をスローする)。 | 空 |
プロパティの構成
接頭辞 spring.ai.openai.image
は、OpenAI の ImageModel
実装を構成できるプロパティ接頭辞です。
プロパティ | 説明 | デフォルト |
spring.ai.openai.image.enabled | OpenAI イメージモデルを有効にします。 | true |
spring.ai.openai.image.base-url | オプションで spring.ai.openai.base-url をオーバーライドして、チャット固有の URL を提供します | - |
spring.ai.openai.image.api-key | オプションで spring.ai.openai.api-key をオーバーライドしてチャット固有の API キーを提供します | - |
spring.ai.openai.image.organization-id | オプションで、API リクエストに使用する組織を指定できます。 | - |
spring.ai.openai.image.project-id | 必要に応じて、API リクエストに使用するプロジェクトを指定できます。 | - |
spring.ai.openai.image.options.n | 生成するイメージの数。1 ~ 10 の範囲である必要があります。dall-e-3 の場合、n=1 のみがサポートされます。 | - |
spring.ai.openai.image.options.model | イメージ生成に使用するモデル。 | OpenAiImageApi.DEFAULT_IMAGE_MODEL |
spring.ai.openai.image.options.quality | 生成されるイメージの品質。HD は、より詳細なイメージとイメージ全体の一貫性を高めたイメージを作成します。このパラメーターは、dall-e-3 でのみサポートされます。 | - |
spring.ai.openai.image.options.response_format | 生成されたイメージが返される形式。URL または b64_json のいずれかである必要があります。 | - |
| 生成されるイメージのサイズ。dall-e-2 の場合は、256x256, 512x512 または 1024x1024 のいずれかである必要があります。1024x1024, 1792x1024 または 1024x1792 (dall-e-3 モデルの場合) のいずれかである必要があります。 | - |
| 生成されたイメージの幅。dall-e-2 の場合は 256, 512,, 1024 のいずれかである必要があります。 | - |
| 生成されたイメージの高さ。dall-e-2 の場合は 256, 512,, 1024 のいずれかである必要があります。 | - |
| 生成されたイメージのスタイル。鮮やかまたはナチュラルのいずれかである必要があります。Vivid を使用すると、モデルは非常にリアルでドラマチックなイメージを生成する方向に傾きます。Natural を選択すると、モデルはより自然で、あまり現実的ではないイメージを生成します。このパラメーターは、dall-e-3 でのみサポートされます。 | - |
| エンドユーザーを表す一意の識別子。OpenAI が不正使用を監視および検出できます。 | - |
共通の spring.ai.openai.base-url 、spring.ai.openai.api-key 、spring.ai.openai.organization-id 、spring.ai.openai.project-id プロパティをオーバーライドできます。spring.ai.openai.image.base-url 、spring.ai.openai.image.api-key 、spring.ai.openai.image.organization-id 、spring.ai.openai.image.project-id プロパティが設定されている場合は、共通のプロパティよりも優先されます。これは、異なるモデルや異なるモデルエンドポイントに異なる OpenAI アカウントを使用する場合に便利です。 |
spring.ai.openai.image.options で始まるすべてのプロパティは、実行時にオーバーライドできます。 |
ランタイムオプション
OpenAiImageOptions.java [GitHub] (英語) では、使用するモデル、品質、サイズなどのモデル構成を提供します。
起動時に、OpenAiImageModel(OpenAiImageApi openAiImageApi)
コンストラクターと withDefaultOptions(OpenAiImageOptions defaultOptions)
メソッドを使用してデフォルトのオプションを構成できます。あるいは、前述の spring.ai.openai.image.options.*
プロパティを使用します。
実行時に、ImagePrompt
呼び出しに新しいリクエスト固有のオプションを追加することで、デフォルトのオプションをオーバーライドできます。たとえば、品質や作成するイメージの数などの OpenAI 固有のオプションをオーバーライドするには、次のコード例を使用します。
ImageResponse response = openaiImageModel.call(
new ImagePrompt("A light cream colored mini golden doodle",
OpenAiImageOptions.builder()
.quality("hd")
.N(4)
.height(1024)
.width(1024).build())
);
モデル固有の OpenAiImageOptions [GitHub] (英語) に加えて、ImageOptionsBuilder#builder() [GitHub] (英語) で作成されたポータブル ImageOptions [GitHub] (英語) インスタンスを使用できます。 |