详细介绍:14_Spring AI 干货笔记之 Azure OpenAI 对话模型
一、Azure OpenAI 对话模型
Azure 的 OpenAI 服务(基于 ChatGPT)超越了传统的 OpenAI 能力,提供了具备增强功能的 AI 驱动文本生成。正如他们最近的更新中强调的那样,Azure 提供了额外的 AI 安全和负责任 AI 功能。
Azure 为 Java 开发者提供了通过与一系列 Azure 服务(包括 AI 相关资源,例如 Azure 上的向量存储)集成来充分利用 AI 潜力的机会。
二、先决条件
Azure OpenAI 客户端提供三种连接选项:使用 Azure API 密钥、使用 OpenAI API 密钥或使用 Microsoft Entra ID。
2.1 Azure API 密钥和端点
要使用 API 密钥访问模型,请从 Azure 门户 的 Azure OpenAI 服务部分获取您的 Azure OpenAI 端点和 api-key。
Spring AI 定义了两个配置属性:
spring.ai.azure.openai.api-key:将其设置为从 Azure 获取的 API 密钥的值。
spring.ai.azure.openai.endpoint:将其设置为在 Azure 中配置模型时获得的端点 URL。
您可以在 application.properties 或 application.yml 文件中设置这些配置属性:
spring.ai.azure.openai.api-key=<your-azure-api-key>
spring.ai.azure.openai.endpoint=<your-azure-endpoint-url>
为了在处理敏感信息(如 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-url>
2.2 OpenAI 密钥
要使用 OpenAI 服务(非 Azure)进行身份验证,请提供 OpenAI API 密钥。这将自动将端点设置为 api.openai.com/v1。
使用此方法时,请将 spring.ai.azure.openai.chat.options.deployment-name 属性设置为要使用的 OpenAI 模型 的名称。
在您的应用程序配置中:
spring.ai.azure.openai.openai-api-key=<your-azure-openai-key>
spring.ai.azure.openai.chat.options.deployment-name=<openai-model-name>
使用带有 SpEL 的环境变量:
# 在 application.yml 中
spring:
ai:
azure:
openai:
openai-api-key: ${
AZURE_OPENAI_API_KEY}
chat:
options:
deployment-name: ${
AZURE_OPENAI_MODEL_NAME}
# 在您的环境或 .env 文件中
export AZURE_OPENAI_API_KEY=<your-openai-key>
export AZURE_OPENAI_MODEL_NAME=<openai-model-name>
2.3 Microsoft Entra ID
要使用 Microsoft Entra ID(原 Azure Active Directory)进行无密钥身份验证,请仅设置 spring.ai.azure.openai.endpoint 配置属性,而不设置上述提到的 api-key 属性。
当仅找到端点属性时,您的应用程序将评估几种不同的检索凭据选项,并将使用令牌凭据创建一个 OpenAIClient 实例。
不再需要创建 TokenCredential bean;它会自动为您配置。
2.4 部署名称
要使用 Azure AI 应用程序,您需要通过 Azure AI 门户 创建一个 Azure AI 部署。在 Azure 中,每个客户端都必须指定一个部署名称来连接到 Azure OpenAI 服务。需要注意的是,部署名称与您选择部署的模型不同。例如,一个名为 “MyAiDeployment” 的部署可以配置为使用 GPT 3.5 Turbo 模型或 GPT 4.0 模型。
要开始使用,请按照以下步骤创建具有默认设置的部署:
部署名称:gpt-4o
模型名称:gpt-4o
此 Azure 配置与 Spring Boot Azure AI Starter 及其自动配置功能的默认配置一致。如果使用不同的部署名称,请确保相应地更新配置属性:
spring.ai.azure.openai.chat.options.deployment-name=<my deployment name>
Azure OpenAI 和 OpenAI 的不同部署结构导致 Azure OpenAI 客户端库中有一个名为 deploymentOrModelName 的属性。这是因为在 OpenAI 中没有部署名称,只有模型名称。
属性 spring.ai.azure.openai.chat.options.model 已更名为spring.ai.azure.openai.chat.options.deployment-name。
如果您决定连接到 OpenAI 而不是 Azure OpenAI(通过设置属性 spring.ai.azure.openai.openai-api-key=),那么 spring.ai.azure.openai.chat.options.deployment-name 将被视为 OpenAI 模型名称。
访问 OpenAI 模型
您可以将客户端配置为直接使用 OpenAI,而不是 Azure OpenAI 部署的模型。为此,您需要设置 spring.ai.azure.openai.openai-api-key=,而不是 spring.ai.azure.openai.api-key=。
2.5 添加仓库和 BOM
Spring AI 构件发布在 Maven Central 和 Spring Snapshot 仓库中。请参考 “项目仓库” 部分,将这些仓库添加到您的构建系统。
为了帮助进行依赖管理,Spring AI 提供了一个 BOM(物料清单),以确保在整个项目中使用一致版本的 Spring AI。请参

浙公网安备 33010602011771号