Spring AI 支持 Stability AI 的文本生成图像模型。
前提条件
你需要在 Stability AI 上创建 API 密钥以访问其 AI 模型。请参考官方入门文档获取你的 API 密钥。
Spring AI 项目定义了一个名为 spring.ai.stabilityai.api-key 的配置属性,你需要将其设置为从 Stability AI 获取的 API 密钥值。
你可以在 application.properties 文件中设置该配置属性:
spring.ai.stabilityai.api-key=<your-stabilityai-api-key>
为了在处理 API 密钥等敏感信息时提升安全性,你可以使用 Spring 表达式语言(SpEL)引用自定义环境变量:
# In application.yml
spring:
ai:
stabilityai:
api-key: ${STABILITYAI_API_KEY}
# In your environment or .env file
export STABILITYAI_API_KEY=<your-stabilityai-api-key>你也可以在应用程序代码中以编程方式设置该配置:
// Retrieve API key from a secure source or environment variable
String apiKey = System.getenv("STABILITYAI_API_KEY");自动配置
Spring AI 自动配置、启动器模块的工件名称发生了重大变更。更多信息请参考升级说明。
Spring AI 为 Stability AI 图像生成客户端提供了 Spring Boot 自动配置。如需启用该功能,请在项目的 Maven pom.xml 文件中添加以下依赖:
<dependency> <groupId>org.springframework.ai</groupId> <artifactId>spring-ai-starter-model-stability-ai</artifactId> </dependency>
或在 Gradle build.gradle 构建文件中添加:
dependencies {
implementation 'org.springframework.ai:spring-ai-starter-model-stability-ai'
}请参考依赖管理章节,将 Spring AI BOM 添加到你的构建文件中。
图像生成配置属性
配置前缀 spring.ai.stabilityai 用于配置连接 Stability AI 的相关属性。
| 配置属性 | 描述 | 默认值 |
|---|---|---|
| spring.ai.stabilityai.base-url | 连接的 URL 地址 | api.stability.ai/v1 |
| spring.ai.stabilityai.api-key | API 密钥 | - |
图像自动配置的启用与禁用现在通过顶级前缀 spring.ai.model.image 进行配置。
启用配置:spring.ai.model.image=stabilityai(默认已启用)
禁用配置:spring.ai.model.image=none(或任何不等于 stabilityai 的值)
该变更用于支持多模型的配置管理。
配置前缀 spring.ai.stabilityai.image 用于配置 Stability AI 的 ImageModel 实现类。
| 配置属性 | 描述 | 默认值 |
|---|---|---|
| spring.ai.stabilityai.image.enabled (已移除,不再生效) | 启用 Stability AI 图像模型 | true |
| spring.ai.model.image | 启用 Stability AI 图像模型 | stabilityai |
| spring.ai.stabilityai.image.base-url | 可选配置,覆盖 spring.ai.openai.base-url,指定专属的 URL 地址 | https://api.stability.ai/v1 |
| spring.ai.stabilityai.image.api-key | 可选配置,覆盖 spring.ai.openai.api-key,指定专属的 API 密钥 | - |
| spring.ai.stabilityai.image.option.n | 生成图像的数量,取值范围 1-10 | 1 |
| spring.ai.stabilityai.image.option.model | Stability AI 中使用的引擎/模型,该模型作为路径参数传入 URL | stable-diffusion-v1-6 |
| spring.ai.stabilityai.image.option.width | 生成图像的宽度(像素),步长需能被 64 整除,受引擎专属维度校验限制 | 512 |
| spring.ai.stabilityai.image.option.height | 生成图像的高度(像素),步长需能被 64 整除,受引擎专属维度校验限制 | 512 |
| spring.ai.stabilityai.image.option.responseFormat | 生成图像的返回格式,取值为 "application/json" 或 "image/png" | - |
| spring.ai.stabilityai.image.option.cfg_scale | 扩散过程遵循提示文本的严格程度,取值范围 0-35 | 7 |
| spring.ai.stabilityai.image.option.clip_guidance_preset | 传入风格预设,引导图像模型生成指定风格,风格预设列表可能变更 | NONE |
| spring.ai.stabilityai.image.option.sampler | 扩散过程使用的采样器,省略该值时将自动选择合适的采样器 | - |
| spring.ai.stabilityai.image.option.seed | 随机噪声种子,省略或设为 0 表示随机种子,有效范围 0-4294967295 | 0 |
| spring.ai.stabilityai.image.option.steps | 扩散步骤运行次数,有效范围 10-50 | 30 |
| spring.ai.stabilityai.image.option.style_preset | 传入风格预设,引导图像模型生成指定风格,风格预设列表可能变更 | - |
运行时选项
StabilityAiImageOptions.java 提供了模型配置项,例如使用的模型、风格、尺寸等。
启动时,可以通过 StabilityAiImageModel(StabilityAiApi stabilityAiApi, StabilityAiImageOptions options) 构造方法配置默认选项。或者使用前文介绍的 spring.ai.openai.image.options.* 配置属性。
运行时,你可以在 ImagePrompt 调用中添加新的请求专属选项,覆盖默认配置。例如,覆盖 Stability AI 专属的生成质量和图像数量等选项,可参考以下代码示例:
ImageResponse response = stabilityaiImageModel.call(
new ImagePrompt("A light cream colored mini golden doodle",
StabilityAiImageOptions.builder()
.stylePreset("cinematic")
.N(4)
.height(1024)
.width(1024).build())
);除了模型专属的 StabilityAiImageOptions,你还可以使用通过 ImageOptionsBuilder#builder() 创建的通用 ImageOptions 实例。