Azure的OpenAI产品由ChatGPT提供支持,超越了传统的OpenAI功能,实现了具有增强功能的AI驱动文本生成。Azure还提供了额外的AI安全和负责任的AI功能。
Azure为Java开发人员提供了通过将AI与一系列Azure服务(包括Azure上的Vector Stores等AI相关资源)集成,从而充分发挥AI潜力的机会。
前提条件
Azure OpenAI客户端提供了三种连接选项:使用Azure API密钥、使用OpenAI API密钥或使用Microsoft Entra ID。
Azure API 密钥和端点
要使用API密钥访问模型,请从Azure门户的Azure OpenAI服务部分获取您的Azure OpenAI端点和API密钥。
Spring AI 定义了两个配置属性:
您可以在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)来引用自定义环境变量:
# In application.ymlspring: ai: azure: openai: api-key: ${AZURE_OPENAI_API_KEY} endpoint: ${AZURE_OPENAI_ENDPOINT}
# In your environment or .env fileexport AZURE_OPENAI_API_KEY=<your-azure-openai-api-key>export AZURE_OPENAI_ENDPOINT=<your-azure-openai-endpoint-url>
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中使用环境变量:
# In application.ymlspring: ai: azure: openai: openai-api-key: ${AZURE_OPENAI_API_KEY} chat: options: deployment-name: ${AZURE_OPENAI_MODEL_NAME}
# In your environment or .env fileexport AZURE_OPENAI_API_KEY=<your-openai-key>export AZURE_OPENAI_MODEL_NAME=<openai-model-name>
微软Entra ID
对于使用 Microsoft Entra ID(原 Azure Active Directory)的无密钥身份验证,请仅设置 spring.ai.azure.openai.endpoint 配置属性,而不要设置上述的 api-key 属性。
仅找到端点属性后,您的应用程序将评估多种不同的选项来检索凭据,并使用令牌凭据创建一个OpenAIClient实例。
无需再创建TokenCredential bean;它已为您自动配置。
部署名称
要使用Azure AI应用程序,您需要通过Azure AI门户创建一个Azure AI部署。在Azure中,每个客户端都必须指定一个部署名称以连接到Azure OpenAI服务。需要注意的是,部署名称与您选择部署的模型不同。例如,一个名为“MyAiDeployment”的部署可以配置为使用GPT 3.5 Turbo模型或GPT 4.0模型。
要开始使用,请按照以下步骤使用默认设置创建部署:
Deployment Name: `gpt-4o`Model Name: `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。
如果你决定通过设置spring.ai.azure.openai.openai-api-key=<Your OpenAI Key>属性来连接到OpenAI而不是Azure OpenAI,那么spring.ai.azure.openai.chat.options.deployment-name将被视为OpenAI模型名称。
访问OpenAI模型
你可以将客户端配置为直接使用OpenAI的模型,而不是Azure OpenAI部署的模型。为此,你需要将spring.ai.azure.openai.openai-api-key设置为<Your OpenAI Key>,而不是将spring.ai.azure.openai.api-key设置为<Your Azure OpenAi Key>。
添加仓库和BOM
Spring AI 工件发布在 Maven Central 和 Spring Snapshot 仓库中。请参阅“构建仓库”部分,以将这些仓库添加到您的构建系统中。
为了辅助依赖管理,Spring AI 提供了一个物料清单 (BOM),以确保整个项目中使用的是一致版本的 Spring AI。请参阅“依赖管理”部分,将 Spring AI BOM 添加到您的构建系统中。