このバージョンはまだ開発中であり、まだ安定しているとは考えられていません。最新のスナップショットバージョンについては、Spring AI 1.1.2 を使用してください。 |
OpenAI SDK イメージ生成 (正式)
Spring AI は、OpenAI Java SDK を通じて OpenAI の DALL-E イメージ生成モデルをサポートし、Microsoft Foundry や GitHub モデルなどの OpenAI のサービスとの堅牢かつ公式にメンテナンスされた統合を提供します。
| この実装は OpenAI の公式 OpenAI Java SDK [GitHub] (英語) を使用しています。Spring の代替 AI 実装については、OpenAI イメージの生成を参照してください。 |
DALL-E は、自然言語による記述からリアルなイメージやアートを作成できる、OpenAI の最先端のイメージ生成モデルです。
OpenAI SDK モジュールは、指定されたベース URL に基づいてサービスプロバイダー (OpenAI、Microsoft Foundry、または GitHub モデル) を自動的に検出します。
認証
認証はベース URL と API キーを使用して行われます。実装では、Spring Boot プロパティまたは環境変数を通じて柔軟な設定オプションが提供されます。
OpenAI の使用
OpenAI を直接使用している場合は、OpenAI サインアップページ (英語) でアカウントを作成し、API キーページ (英語) で API キーを生成します。
ベース URL はデフォルトで api.openai.com/v1 (英語) に設定されるため、設定する必要はありません。
spring.ai.openai-sdk.api-key=<your-openai-api-key>
# base-url is optional, defaults to https://api.openai.com/v1または環境変数を使用します:
export OPENAI_API_KEY=<your-openai-api-key>
# OPENAI_BASE_URL is optional, defaults to https://api.openai.com/v1Microsoft Foundry の使用
Microsoft Foundry URL を使用すると、Microsoft Foundry が自動的に検出されます。以下のプロパティを使用して設定できます。
spring.ai.openai-sdk.base-url=https://<your-deployment-url>.openai.azure.com
spring.ai.openai-sdk.api-key=<your-api-key>
spring.ai.openai-sdk.microsoft-deployment-name=<your-deployment-name>または環境変数を使用します:
export OPENAI_BASE_URL=https://<your-deployment-url>.openai.azure.com
export OPENAI_API_KEY=<your-api-key>パスワードレス認証(Azure に推奨):
Microsoft Foundry は、API キーを提供せずにパスワードレス認証をサポートしており、Azure で実行する場合の安全性が高まります。
パスワードレス認証を有効にするには、com.azure:azure-identity 依存関係を追加します。
<dependency>
<groupId>com.azure</groupId>
<artifactId>azure-identity</artifactId>
</dependency>次に、API キーなしで設定します。
spring.ai.openai-sdk.base-url=https://<your-deployment-url>.openai.azure.com
spring.ai.openai-sdk.microsoft-deployment-name=<your-deployment-name>
# No api-key needed - will use Azure credentials from environmentGitHub モデルの使用
GitHub モデルのベース URL を使用すると、GitHub モデルが自動的に検出されます。models:read スコープで GitHub パーソナルアクセストークン(PAT)を作成する必要があります。
spring.ai.openai-sdk.base-url=https://models.inference.ai.azure.com
spring.ai.openai-sdk.api-key=github_pat_XXXXXXXXXXXまたは環境変数を使用します:
export OPENAI_BASE_URL=https://models.inference.ai.azure.com
export OPENAI_API_KEY=github_pat_XXXXXXXXXXX| API キーなどの機密情報を扱う際のセキュリティを強化するために、プロパティで Spring 式言語 (SpEL) を使用できます。 |
spring.ai.openai-sdk.api-key=${OPENAI_API_KEY}リポジトリと BOM の追加
Spring AI アーティファクトは、Maven Central リポジトリと Spring スナップショットリポジトリに公開されています。これらのリポジトリをビルドシステムに追加するには、アーティファクトリポジトリセクションを参照してください。
依存関係の管理を支援するために、Spring AI は BOM (部品表) を提供し、一貫したバージョンの Spring AI がプロジェクト全体で使用されるようにします。Spring AI BOM をビルドシステムに追加するには、"依存関係管理" セクションを参照してください。
自動構成
Spring AI は、OpenAI SDK イメージモデル用の Spring Boot 自動構成を提供します。これを有効にするには、プロジェクトの Maven pom.xml または Gradle build.gradle ビルドファイルに以下の依存関係を追加してください。
Maven
Gradle
<dependency>
<groupId>org.springframework.ai</groupId>
<artifactId>spring-ai-starter-model-openai-sdk</artifactId>
</dependency>dependencies {
implementation 'org.springframework.ai:spring-ai-starter-model-openai-sdk'
}| Spring AI BOM をビルドファイルに追加するには、"依存関係管理" セクションを参照してください。 |
プロパティの構成
接続プロパティ
プレフィックス spring.ai.openai-sdk は、OpenAI SDK クライアントを構成できるプロパティプレフィックスとして使用されます。
| プロパティ | 説明 | デフォルト |
|---|---|---|
spring.ai.openai-sdk.base-url | 接続先の URL。設定されていない場合は、 | |
spring.ai.openai-sdk.api-key | API キー。設定されていない場合は、 | - |
spring.ai.openai-sdk.organization-id | 必要に応じて、API リクエストに使用する組織を指定します。 | - |
spring.ai.openai-sdk.timeout | リクエストのタイムアウト期間。 | - |
spring.ai.openai-sdk.max-retries | 失敗したリクエストの最大再試行回数。 | - |
spring.ai.openai-sdk.proxy | OpenAI クライアント (Java | - |
spring.ai.openai-sdk.custom-headers | リクエストに含めるカスタム HTTP ヘッダー。ヘッダー名とヘッダー値のマップ。 | - |
マイクロソフトファウンドリープロパティ
OpenAI SDK 実装は、自動構成による Microsoft Foundry のネイティブサポートを提供します。
| プロパティ | 説明 | デフォルト |
|---|---|---|
spring.ai.openai-sdk.microsoft-foundry | Microsoft Foundry モードを有効にします。ベース URL に | false |
spring.ai.openai-sdk.microsoft-deployment-name | Microsoft Foundry デプロイ名。指定されていない場合はモデル名が使用されます。エイリアス | - |
spring.ai.openai-sdk.microsoft-foundry-service-version | Microsoft Foundry API サービスバージョン。 | - |
spring.ai.openai-sdk.credential | パスワードレス認証用の資格情報オブジェクト ( | - |
Microsoft Foundry はパスワードレス認証をサポートしています。com.azure:azure-identity 依存関係を追加すると、API キーが提供されていない場合、実装は自動的に環境から Azure の資格情報を使用しようとします。 |
GitHub モデルのプロパティ
GitHub モデルのネイティブサポートが利用可能です:
| プロパティ | 説明 | デフォルト |
|---|---|---|
spring.ai.openai-sdk.github-models | GitHub モデルモードを有効にします。ベース URL に | false |
GitHub モデルには、models:read スコープの個人アクセストークンが必要です。OPENAI_API_KEY 環境変数または spring.ai.openai-sdk.api-key プロパティで設定してください。 |
イメージモデルのプロパティ
プレフィックス spring.ai.openai-sdk.image は、イメージモデルの実装を構成するためのプロパティプレフィックスです。
| プロパティ | 説明 | デフォルト |
|---|---|---|
spring.ai.openai-sdk.image.options.model | The model to use for image generation. Available models: |
|
spring.ai.openai-sdk.image.options.n | 生成するイメージの数。1 ~ 10 の範囲で指定する必要があります。 | - |
spring.ai.openai-sdk.image.options.quality | 生成されるイメージの品質。 | - |
spring.ai.openai-sdk.image.options.response-format | 生成されたイメージが返される形式。 | - |
spring.ai.openai-sdk.image.options.size | 生成されるイメージのサイズ。 | - |
spring.ai.openai-sdk.image.options.width | 生成されるイメージの幅。256, 512,, 1024 または | - |
spring.ai.openai-sdk.image.options.height | 生成されるイメージの高さ。256, 512,, 1024 または | - |
spring.ai.openai-sdk.image.options.style | 生成するイメージのスタイル。 | - |
spring.ai.openai-sdk.image.options.user | エンドユーザーを表す一意の識別子。OpenAI が不正使用を監視および検出できます。 | - |
spring.ai.openai-sdk.image.options で始まるすべてのプロパティは、リクエスト固有のランタイムオプションを ImagePrompt 呼び出しに追加することによって実行時にオーバーライドできます。 |
ランタイムオプション
OpenAiSdkImageOptions.java [GitHub] (英語) は、使用するモデル、品質、サイズ、スタイル、生成するイメージの数などの OpenAI 構成を提供します。
デフォルトのオプションは、spring.ai.openai-sdk.image.options プロパティを使用して構成することもできます。
起動時には、OpenAiSdkImageModel コンストラクターを使用して、すべてのイメージ生成リクエストで使用されるデフォルトオプションを設定します。実行時には、ImagePrompt の一部として OpenAiSdkImageOptions インスタンスを使用することで、デフォルトオプションをオーバーライドできます。
For example to override the default model and quality for a specific request:
ImageResponse response = imageModel.call(
new ImagePrompt("A light cream colored mini golden doodle",
OpenAiSdkImageOptions.builder()
.model("dall-e-3")
.quality("hd")
.N(1)
.width(1024)
.height(1024)
.style("vivid")
.build()));| モデル固有の OpenAiSdkImageOptions [GitHub] (英語) に加えて、ImageOptionsBuilder#builder() [GitHub] (英語) で作成されたポータブル ImageOptions [GitHub] (英語) インスタンスを使用できます。 |
サンプルコントローラー
新しい Spring Boot プロジェクトを作成し、spring-ai-openai-sdk を pom (または gradle) の依存関係に追加します。
Add an application.properties file under the src/main/resources directory to configure the OpenAI SDK image model:
spring.ai.openai-sdk.api-key=YOUR_API_KEY
spring.ai.openai-sdk.image.options.model=dall-e-3api-key を OpenAI の資格情報に置き換えます。 |
This will create an OpenAiSdkImageModel implementation that you can inject into your classes. Here is an example of a simple @RestController class that uses the image model.
@RestController
public class ImageController {
private final ImageModel imageModel;
@Autowired
public ImageController(ImageModel imageModel) {
this.imageModel = imageModel;
}
@GetMapping("/ai/image")
public Map<String, Object> generateImage(
@RequestParam(value = "prompt", defaultValue = "A light cream colored mini golden doodle") String prompt) {
ImageResponse response = this.imageModel.call(
new ImagePrompt(prompt,
OpenAiSdkImageOptions.builder()
.quality("hd")
.N(1)
.width(1024)
.height(1024)
.build()));
String imageUrl = response.getResult().getOutput().getUrl();
return Map.of("url", imageUrl);
}
}手動構成
OpenAiSdkImageModel [GitHub] (英語) は ImageModel を実装し、公式の OpenAI Java SDK を使用して OpenAI サービスに接続します。
If you are not using Spring Boot auto-configuration, you can manually configure the OpenAI SDK Image Model. For this add the spring-ai-openai-sdk dependency to your project’s Maven pom.xml file:
<dependency>
<groupId>org.springframework.ai</groupId>
<artifactId>spring-ai-openai-sdk</artifactId>
</dependency> または、Gradle build.gradle ビルドファイルに次の内容を追加します。
dependencies {
implementation 'org.springframework.ai:spring-ai-openai-sdk'
}| Spring AI BOM をビルドファイルに追加するには、"依存関係管理" セクションを参照してください。 |
spring-ai-openai-sdk 依存関係は、OpenAiSdkChatModel および OpenAiSdkEmbeddingModel へのアクセスも提供します。OpenAiSdkChatModel の詳細については、OpenAI SDK チャットセクションを参照してください。 |
Next, create an OpenAiSdkImageModel instance and use it to generate images:
var imageOptions = OpenAiSdkImageOptions.builder()
.model("dall-e-3")
.quality("hd")
.apiKey(System.getenv("OPENAI_API_KEY"))
.build();
var imageModel = new OpenAiSdkImageModel(imageOptions);
ImageResponse response = imageModel.call(
new ImagePrompt("A light cream colored mini golden doodle",
OpenAiSdkImageOptions.builder()
.N(1)
.width(1024)
.height(1024)
.build()));The OpenAiSdkImageOptions provides the configuration information for the image generation requests. The options class offers a builder() for easy options creation.
Microsoft Foundry 構成
Microsoft Foundry の場合:
var imageOptions = OpenAiSdkImageOptions.builder()
.baseUrl("https://your-resource.openai.azure.com")
.apiKey(System.getenv("OPENAI_API_KEY"))
.deploymentName("dall-e-3")
.azureOpenAIServiceVersion(AzureOpenAIServiceVersion.V2024_10_01_PREVIEW)
.azure(true) // Enables Microsoft Foundry mode
.build();
var imageModel = new OpenAiSdkImageModel(imageOptions);Microsoft Foundry はパスワードレス認証をサポートしています。プロジェクトに com.azure:azure-identity 依存関係を追加してください。API キーを指定しない場合、実装は自動的に環境の Azure 認証情報を使用しようとします。 |