Spring AI 支持智谱AI的图像生成模型CogView。
前提条件
你需要在智谱AI创建API以访问智谱AI语言模型。
在智谱AI注册页面创建账号,并在API密钥页面生成令牌。
Spring AI项目定义了一个名为spring.ai.zhipuai.api-key的配置属性,你需要将其设置为从API密钥页面获取的API密钥值。
你可以在application.properties文件中设置该配置属性:
spring.ai.zhipuai.api-key=<your-zhipuai-api-key>
为了在处理API密钥等敏感信息时提升安全性,你可以使用Spring表达式语言(SpEL)引用自定义环境变量:
# In application.yml
spring:
ai:
zhipuai:
api-key: ${ZHIPUAI_API_KEY}
# In your environment or .env file
export ZHIPUAI_API_KEY=<your-zhipuai-api-key>你也可以在应用程序代码中以编程方式设置该配置:
// Retrieve API key from a secure source or environment variable
String apiKey = System.getenv("ZHIPUAI_API_KEY");添加仓库和物料清单(BOM)
Spring AI构件发布在Maven Central和Spring快照仓库中。参考构件仓库章节将这些仓库添加到你的构建系统中。
为了便于依赖管理,Spring AI提供了BOM(物料清单),以确保整个项目使用一致版本的Spring AI。参考依赖管理章节将Spring AI BOM添加到你的构建系统中。
自动配置
Spring AI自动配置、启动器模块的构件名称发生了重大变更。更多信息请参考升级说明。
Spring AI为智谱AI聊天客户端提供了Spring Boot自动配置。如需启用该功能,请在项目的Maven pom.xml文件中添加以下依赖:
<dependency> <groupId>org.springframework.ai</groupId> <artifactId>spring-ai-starter-model-zhipuai</artifactId> </dependency>
或在Gradle build.gradle构建文件中添加:
dependencies {
implementation 'org.springframework.ai:spring-ai-starter-model-zhipuai'
}请参考依赖管理章节,将Spring AI BOM添加到你的构建文件中。
图像生成配置属性
图像自动配置的启用与禁用现在通过顶级前缀spring.ai.model.image进行配置。
启用配置:spring.ai.model.image=stabilityai(默认已启用)
禁用配置:spring.ai.model.image=none(或任何不等于stabilityai的值)
该变更用于支持多模型的配置管理。
配置前缀spring.ai.zhipuai.image用于配置智谱AI的ImageModel实现类。
| 配置属性 | 描述 | 默认值 |
|---|---|---|
| spring.ai.zhipuai.image.enabled (已移除,不再生效) | 启用智谱AI图像模型 | true |
| spring.ai.model.image | 启用智谱AI图像模型 | zhipuai |
| spring.ai.zhipuai.image.base-url | 可选配置,覆盖spring.ai.zhipuai.base-url,指定聊天专属URL | - |
| spring.ai.zhipuai.image.api-key | 可选配置,覆盖spring.ai.zhipuai.api-key,指定聊天专属API密钥 | - |
| spring.ai.zhipuai.image.options.model | 用于图像生成的模型 | cogview-3 |
| spring.ai.zhipuai.image.options.user | 代表终端用户的唯一标识符,可帮助智谱AI监控和检测滥用行为 | - |
连接配置属性
配置前缀spring.ai.zhipuai用于配置连接智谱AI的相关属性。
| 配置属性 | 描述 | 默认值 |
|---|---|---|
| spring.ai.zhipuai.base-url | 连接的URL地址 | open.bigmodel.cn/api/paas |
| spring.ai.zhipuai.api-key | API密钥 | - |
配置属性
重试配置属性
配置前缀spring.ai.retry用于配置智谱AI图像客户端的重试机制。
| 配置属性 | 描述 | 默认值 |
|---|---|---|
| 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,且不会对4xx客户端错误码尝试重试 | false |
| spring.ai.retry.exclude-on-http-codes | 不应触发重试的HTTP状态码列表(例如抛出NonTransientAiException) | 空 |
| spring.ai.retry.on-http-codes | 应触发重试的HTTP状态码列表(例如抛出TransientAiException) | 空 |
运行时选项
ZhiPuAiImageOptions.java提供了模型配置项,例如使用的模型、质量、尺寸等。
启动时,可以通过ZhiPuAiImageModel(ZhiPuAiImageApi zhiPuAiImageApi)构造方法和withDefaultOptions(ZhiPuAiImageOptions defaultOptions)方法配置默认选项。或者使用前文介绍的spring.ai.zhipuai.image.options.*配置属性。
运行时,你可以在ImagePrompt调用中添加新的请求专属选项,覆盖默认配置。例如,覆盖智谱AI专属的生成质量和图像数量等选项,可参考以下代码示例:
ImageResponse response = zhiPuAiImageModel.call(
new ImagePrompt("A light cream colored mini golden doodle",
ZhiPuAiImageOptions.builder()
.quality("hd")
.N(4)
.height(1024)
.width(1024).build())
);除了模型专属的ZhiPuAiImageOptions,你还可以使用通过ImageOptionsBuilder#builder()创建的通用ImageOptions实例。