侧边栏壁纸
博主头像
AI中文站

write sth

  • 累计撰写 36 篇文章
  • 累计创建 3 个标签
  • 累计收到 0 条评论

目 录CONTENT

文章目录

SpringAI-OpenAI Image Generation

Spring AI 支持OpenAI的图像生成模型DALL-E。

前置条件

需创建OpenAI API密钥以访问ChatGPT模型。
请在OpenAI注册页面创建账户,并于API密钥页面生成令牌。

Spring AI项目定义了配置属性spring.ai.openai.api-key,需将其设置为从openai.com获取的API密钥值。
可在application.properties文件中配置:

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

为提升API密钥等敏感信息的安全性,可使用Spring表达式语言(SpEL)引用自定义环境变量:

# application.yml
spring:
  ai:
    openai:
      api-key: ${OPENAI_API_KEY}

# 环境变量或.env文件
export OPENAI_API_KEY=<your-openai-api-key>

也可在应用代码中编程设置:

// 从安全源或环境变量获取API密钥
String apiKey = System.getenv("OPENAI_API_KEY");

自动配置
Spring AI自动配置及starter模块构件名称有重大变更,请参考升级说明。

Spring Boot为OpenAI图像生成客户端提供自动配置。添加以下依赖至Maven的pom.xml文件启用:

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

或Gradle的build.gradle文件:

dependencies {
    implementation 'org.springframework.ai:spring-ai-starter-model-openai'
}

请参考依赖管理章节将Spring AI BOM添加到构建文件。

图像生成属性
连接属性
前缀spring.ai.openai用于连接OpenAI的属性配置:

属性

描述

默认值

spring.ai.openai.base-url

连接URL

api.openai.com

spring.ai.openai.api-key

API密钥

-

spring.ai.openai.organization-id

可选指定请求组织

-

spring.ai.openai.project-id

可选指定请求项目

-

多组织用户可通过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时对4xx错误抛出NonTransientAiException且不重试

false

spring.ai.retry.exclude-on-http-codes

不触发重试的HTTP状态码列表

spring.ai.retry.on-http-codes

触发重试的HTTP状态码列表

配置属性
图像自动配置的启用/禁用现通过顶级属性spring.ai.model.image配置:

  • 启用:spring.ai.model.image=openai(默认启用)

  • 禁用:spring.ai.model.image=none(或非openai值)

此变更为支持多模型配置。

前缀spring.ai.openai.image用于配置OpenAI的ImageModel实现:

属性

描述

默认值

spring.ai.openai.image.enabled (已移除)

旧版启用属性

true

spring.ai.model.image

新版启用属性

openai

spring.ai.openai.image.base-url

覆盖通用base-url的专属URL

-

spring.ai.openai.image.api-key

覆盖通用api-key的专属密钥

-

spring.ai.openai.image.organization-id

专属请求组织ID

-

spring.ai.openai.image.project-id

专属请求项目ID

-

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

图像质量(仅dall-e-3支持HD高清)

-

spring.ai.openai.image.options.response_format

返回格式(URL或b64_json)

-

spring.ai.openai.image.options.size

图像尺寸:dall-e-2支持256x256/512x512/1024x1024;dall-e-3支持1024x1024/1792x1024/1024x1792

-

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

终端用户唯一标识(助力滥用监测)

-

专属属性spring.ai.openai.image.*优先覆盖通用属性spring.ai.openai.*,便于不同模型使用独立OpenAI账户。
所有spring.ai.openai.image.options.*属性支持运行时覆盖。

运行时选项
OpenAiImageOptions.java提供模型配置(如模型类型/质量/尺寸等)。

启动时可通过以下方式配置默认选项:

  • OpenAiImageModel(OpenAiImageApi openAiImageApi)构造器

  • withDefaultOptions(OpenAiImageOptions defaultOptions)方法

  • 或前述spring.ai.openai.image.options.*属性

运行时可通过ImagePrompt调用覆盖默认选项。例如覆盖图像质量和生成数量:

ImageResponse response = openaiImageModel.call(
    new ImagePrompt("浅奶油色迷你金毛贵宾犬",
        OpenAiImageOptions.builder()
            .quality("hd")
            .N(4)
            .height(1024)
            .width(1024).build()
);

除模型专属的OpenAiImageOptions外,也可使用通过ImageOptionsBuilder#builder()创建的通用ImageOptions实例。

0

评论区