OpenAI 影像生成
Spring AI 支援 OpenAI 的影像生成模型 DALL-E。
先決條件
您需要使用 OpenAI 建立 API 金鑰才能存取 ChatGPT 模型。在 OpenAI 註冊頁面 建立帳戶,並在 API 金鑰頁面 產生權杖。Spring AI 專案定義了一個名為 spring.ai.openai.api-key
的組態屬性,您應該將其設定為從 openai.com 取得的 API 金鑰
值。匯出環境變數是設定該組態屬性的一種方式
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 其中之一。對於 dall-e-3 模型,必須是 1024x1024、1792x1024 或 1024x1792 其中之一。 |
- |
|
產生影像的寬度。對於 dall-e-2,必須是 256、512 或 1024 其中之一。 |
- |
|
產生影像的高度。對於 dall-e-2,必須是 256、512 或 1024 其中之一。 |
- |
|
產生影像的樣式。必須是 vivid 或 natural 其中之一。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 提供模型組態,例如要使用的模型、品質、大小等等。
在啟動時,可以使用 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()
.withQuality("hd")
.withN(4)
.withHeight(1024)
.withWidth(1024).build())
);
除了模型特定的 OpenAiImageOptions 之外,您還可以使用可攜式的 ImageOptions 實例,該實例是使用 ImageOptionsBuilder#builder() 建立的。 |