收藏本站,收获最前沿的人工智能与编程资讯!!

Spring AI 使用 Azure OpenAI 图像生成

技术文档 13℃ 0

Spring AI 支持 Azure OpenAI 提供的 gpt-image-1-mini 图像生成模型。

前提条件

在 Azure 门户的 Azure OpenAI 服务板块中获取你的 Azure OpenAI 端点和 API 密钥。

Spring AI 定义了两个配置属性:

spring.ai.azure.openai.api-key:设置为从 Azure 获取的 API 密钥值。

spring.ai.azure.openai.endpoint:设置为在 Azure 中部署模型时获取的端点 URL。

你可以在 application.properties 文件中设置这些配置属性:

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

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

# 在 application.yml 文件中
spring:
  ai:
    azure:
      openai:
        api-key: ${AZURE_OPENAI_API_KEY}
        endpoint: ${AZURE_OPENAI_ENDPOINT}
# 在环境变量或 .env 文件中
export AZURE_OPENAI_API_KEY=<your-azure-openai-api-key>
export AZURE_OPENAI_ENDPOINT=<your-azure-openai-endpoint>

你也可以在应用代码中通过编程方式设置这些配置:

// 从安全来源或环境变量中获取 API 密钥和端点
String apiKey = System.getenv("AZURE_OPENAI_API_KEY");
String endpoint = System.getenv("AZURE_OPENAI_ENDPOINT");

部署名称

要运行 Azure AI 应用程序,请通过 [Azure AI 门户](oai.azure.com/portal) 创建 Azure AI 部署。

在 Azure 中,每个客户端必须指定部署名称才能连接到 Azure OpenAI 服务。

务必注意:部署名称与你选择部署的模型名称是不同的。

例如,名为“MyImgAiDeployment”的部署可以配置为使用 gpt-image-1-mini 模型。

目前,为简化操作,你可以使用以下配置创建部署:

部署名称:MyImgAiDeployment 模型名称:gpt-image-1-mini

该 Azure 配置将与 Spring Boot Azure AI 启动器及其自动配置功能的默认配置保持一致。

如果你使用了其他部署名称,请相应更新配置属性:

spring.ai.azure.openai.image.options.deployment-name=<my deployment name>

Azure OpenAI 与 OpenAI 不同的部署结构,导致 Azure OpenAI 客户端库中存在一个名为 deploymentOrModelName 的属性。这是因为 OpenAI 中没有部署名称,只有模型名称。

添加仓库和物料清单(BOM)

Spring AI 构件发布在 Maven 中央仓库和 Spring 快照仓库中。参考构件仓库章节,将这些仓库添加到你的构建系统中。

为了简化依赖管理,Spring AI 提供了物料清单(BOM),确保整个项目使用一致版本的 Spring AI。参考依赖管理章节,将 Spring AI BOM 添加到你的构建系统中。

自动配置

Spring AI 自动配置、启动器模块的构件名称发生了重大变更。更多信息请参考升级说明。

Spring AI 为 Azure OpenAI 聊天客户端提供了 Spring Boot 自动配置。如需启用该功能,请在项目的 Maven pom.xml 文件中添加以下依赖:

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

或在 Gradle 的 build.gradle 构建文件中添加:

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

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

图像生成配置属性

图像模型自动配置的启用与禁用,现在通过以 spring.ai.model.image 为前缀的顶级属性进行配置。

启用配置:spring.ai.model.image=azure-openai(默认已启用)

禁用配置:spring.ai.model.image=none(或任何不等于 azure-openai 的值)

该变更用于支持多模型配置。

以 spring.ai.azure.openai.image 为前缀的属性,用于配置 Azure OpenAI 的 ImageModel 实现类。

属性描述默认值
spring.ai.azure.openai.image.enabled (已移除,不再生效)启用 Azure OpenAI 图像模型true
spring.ai.model.image启用图像模型,Azure OpenAI 需设置为 azure-openaiazure-openai
spring.ai.azure.openai.image.options.n生成图像的数量(例如 gpt-image-1-mini 模型为 1)-
spring.ai.azure.openai.image.options.model用于图像生成的模型(例如 gpt-image-1-mini)gpt-image-1-mini
spring.ai.azure.openai.image.options.deployment-name你在 Azure AI 工作室中为图像模型定义的部署名称-
spring.ai.azure.openai.image.options.response_format生成图像的返回格式,必须为 URL 或 b64_json 之一-
spring.ai.azure.openai.image.options.size生成图像的尺寸(例如 1024x1024)。请查阅 Azure 文档确认模型支持的尺寸-
spring.ai.azure.openai.image.options.size_width生成图像的宽度-
spring.ai.azure.openai.image.options.size_height生成图像的高度-
spring.ai.azure.openai.image.options.user终端用户的唯一标识,帮助 Azure OpenAI 监控和检测滥用行为-

连接属性

以 spring.ai.azure.openai 为前缀的属性,用于配置与 Azure OpenAI 的连接。

属性描述默认值
spring.ai.azure.openai.endpoint连接 URL(例如 <your-resource>.openai.azure.com/)-
spring.ai.azure.openai.apiKeyAPI 密钥-

运行时选项

AzureOpenAiImageOptions 提供了模型配置项,例如部署名称、模型和图像尺寸。

应用启动时,可以通过 AzureOpenAiImageModel(OpenAIClient openAIClient, AzureOpenAiImageOptions options) 构造方法配置默认选项。或者使用前文介绍的 spring.ai.azure.openai.image.options.* 系列属性。

运行时,你可以在 ImagePrompt 调用中添加请求专属的选项来覆盖默认配置。例如,使用 gpt-image-1-mini 模型并自定义图像尺寸:

ImageResponse response = azureOpenAiImageModel.call(
        new ImagePrompt("A light cream colored mini golden doodle",
        AzureOpenAiImageOptions.builder()
                .model("gpt-image-1-mini")
                .deploymentName("gpt-image-1-mini")
                .height(1024)
                .width(1024)
                .build())
);

除了模型专属的 AzureOpenAiImageOptions,你还可以使用通过 ImageOptionsBuilder#builder() 创建的通用 ImageOptions 实例。

相关推荐